From f618b3377286940702d86f637781ac657ee1db7f Mon Sep 17 00:00:00 2001 From: falkTX Date: Wed, 8 Sep 2021 19:54:56 +0100 Subject: [PATCH] sofd tweaks and implement button options Signed-off-by: falkTX --- dgl/Window.hpp | 2 +- dgl/src/WindowPrivateData.cpp | 12 +++++++++--- dgl/src/pugl.cpp | 8 +++----- dgl/src/sofd/libsofd.c | 2 +- 4 files changed, 14 insertions(+), 10 deletions(-) diff --git a/dgl/Window.hpp b/dgl/Window.hpp index c34ccc86..a4bb115a 100644 --- a/dgl/Window.hpp +++ b/dgl/Window.hpp @@ -87,7 +87,7 @@ public: Buttons() : listAllFiles(kButtonVisibleChecked), showHidden(kButtonVisibleUnchecked), - showPlaces(kButtonVisibleUnchecked) {} + showPlaces(kButtonVisibleChecked) {} } buttons; /** Constructor for default values */ diff --git a/dgl/src/WindowPrivateData.cpp b/dgl/src/WindowPrivateData.cpp index 1bc78fd5..892b068b 100644 --- a/dgl/src/WindowPrivateData.cpp +++ b/dgl/src/WindowPrivateData.cpp @@ -459,19 +459,19 @@ bool Window::PrivateData::openFileBrowser(const Window::FileBrowserOptions& opti if (startDir.isEmpty()) { // TESTING verify this whole thing... -#ifdef DISTRHO_OS_WINDOWS +# ifdef DISTRHO_OS_WINDOWS if (char* const cwd = _getcwd(nullptr, 0)) { startDir = cwd; std::free(cwd); } -#else +# else if (char* const cwd = getcwd(nullptr, 0)) { startDir = cwd; std::free(cwd); } -#endif +# endif } DISTRHO_SAFE_ASSERT_RETURN(startDir.isNotEmpty(), false); @@ -497,14 +497,17 @@ bool Window::PrivateData::openFileBrowser(const Window::FileBrowserOptions& opti # ifdef DISTRHO_OS_MAC uint flags = 0x0; + if (options.buttons.listAllFiles == FileBrowserOptions::kButtonVisibleChecked) flags |= 0x001; else if (options.buttons.listAllFiles == FileBrowserOptions::kButtonVisibleUnchecked) flags |= 0x002; + if (options.buttons.showHidden == FileBrowserOptions::kButtonVisibleChecked) flags |= 0x010; else if (options.buttons.showHidden == FileBrowserOptions::kButtonVisibleUnchecked) flags |= 0x020; + if (options.buttons.showPlaces == FileBrowserOptions::kButtonVisibleChecked) flags |= 0x100; else if (options.buttons.showPlaces == FileBrowserOptions::kButtonVisibleUnchecked) @@ -564,14 +567,17 @@ bool Window::PrivateData::openFileBrowser(const Window::FileBrowserOptions& opti # ifdef HAVE_X11 uint flags = 0x0; + if (options.buttons.listAllFiles == FileBrowserOptions::kButtonVisibleChecked) flags |= 0x001; else if (options.buttons.listAllFiles == FileBrowserOptions::kButtonVisibleUnchecked) flags |= 0x002; + if (options.buttons.showHidden == FileBrowserOptions::kButtonVisibleChecked) flags |= 0x010; else if (options.buttons.showHidden == FileBrowserOptions::kButtonVisibleUnchecked) flags |= 0x020; + if (options.buttons.showPlaces == FileBrowserOptions::kButtonVisibleChecked) flags |= 0x100; else if (options.buttons.showPlaces == FileBrowserOptions::kButtonVisibleUnchecked) diff --git a/dgl/src/pugl.cpp b/dgl/src/pugl.cpp index e30e42ea..75d9c850 100644 --- a/dgl/src/pugl.cpp +++ b/dgl/src/pugl.cpp @@ -642,11 +642,9 @@ bool sofdFileDialogShow(PuglView* const view, DISTRHO_SAFE_ASSERT_RETURN(x_fib_configure(0, startDir) == 0, false); DISTRHO_SAFE_ASSERT_RETURN(x_fib_configure(1, title) == 0, false); - /* - x_fib_cfg_buttons(3, options.buttons.listAllFiles-1); - x_fib_cfg_buttons(1, options.buttons.showHidden-1); - x_fib_cfg_buttons(2, options.buttons.showPlaces-1); - */ + x_fib_cfg_buttons(3, flags & 0x001 ? 1 : flags & 0x002 ? 0 : -1); + x_fib_cfg_buttons(1, flags & 0x010 ? 1 : flags & 0x020 ? 0 : -1); + x_fib_cfg_buttons(2, flags & 0x100 ? 1 : flags & 0x200 ? 0 : -1); return (x_fib_show(sofd_display, view->impl->win, 0, 0, scaleFactor + 0.5) == 0); } diff --git a/dgl/src/sofd/libsofd.c b/dgl/src/sofd/libsofd.c index 6fece02a..ad8eca48 100644 --- a/dgl/src/sofd/libsofd.c +++ b/dgl/src/sofd/libsofd.c @@ -2072,7 +2072,7 @@ int x_fib_show (Display *dpy, Window parent, int x, int y, double scalefactor) { sync_button_states () ; _fib_height = _fib_font_vsep * 15.8 * (1.0 + (scalefactor - 1.0) / 2.0); - _fib_width = MAX (_btn_span, 440 * scalefactor); + _fib_width = MAX (_btn_span, 480 * scalefactor); XResizeWindow (dpy, _fib_win, _fib_width, _fib_height);