From dfdf4bf39d10db9916b644f09554e194f2545227 Mon Sep 17 00:00:00 2001 From: heckflosse Date: Wed, 9 May 2018 22:28:59 +0200 Subject: [PATCH] Fix Gtk-Message: GtkDialog mapped without a transient parent. This is discouraged. when selecting Open with windows default viewer (queue processed) and file is not queue processes (Windows only), fixes #4539 --- rtgui/filebrowser.cc | 27 +++++++++++++++++---------- rtgui/filebrowser.h | 2 ++ 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/rtgui/filebrowser.cc b/rtgui/filebrowser.cc index b308911a7..5d196404f 100644 --- a/rtgui/filebrowser.cc +++ b/rtgui/filebrowser.cc @@ -127,6 +127,7 @@ void findOriginalEntries (const std::vector& entries) FileBrowser::FileBrowser () : menuLabel(nullptr), + miOpenDefaultViewer(nullptr), selectDF(nullptr), thisIsDF(nullptr), autoDF(nullptr), @@ -225,8 +226,6 @@ FileBrowser::FileBrowser () : * *********************/ #if defined(WIN32) Gtk::manage(miOpenDefaultViewer = new Gtk::MenuItem (M("FILEBROWSER_OPENDEFAULTVIEWER"))); -#else - miOpenDefaultViewer = nullptr; #endif // Build a list of menu items @@ -240,7 +239,7 @@ FileBrowser::FileBrowser () : } // Attach them to menu - if (!mMenuExtProgs.empty() || miOpenDefaultViewer != nullptr) { + if (!mMenuExtProgs.empty() || miOpenDefaultViewer) { amiExtProg = new Gtk::MenuItem*[mMenuExtProgs.size()]; int itemNo = 0; @@ -249,11 +248,12 @@ FileBrowser::FileBrowser () : p++; Gtk::Menu* submenuExtProg = Gtk::manage (new Gtk::Menu()); - if (miOpenDefaultViewer != nullptr) { +#ifdef WIN32 + if (miOpenDefaultViewer) { submenuExtProg->attach (*miOpenDefaultViewer, 0, 1, p, p + 1); p++; } - +#endif for (auto it = mMenuExtProgs.begin(); it != mMenuExtProgs.end(); it++, itemNo++) { submenuExtProg->attach (*Gtk::manage(amiExtProg[itemNo] = new Gtk::MenuItem ((*it).first)), 0, 1, p, p + 1); p++; @@ -262,11 +262,12 @@ FileBrowser::FileBrowser () : submenuExtProg->show_all (); menuExtProg->set_submenu (*submenuExtProg); } else { - if (miOpenDefaultViewer != nullptr) { +#ifdef WIN32 + if (miOpenDefaultViewer) { pmenu->attach (*miOpenDefaultViewer, 0, 1, p, p + 1); p++; } - +#endif for (auto it = mMenuExtProgs.begin(); it != mMenuExtProgs.end(); it++, itemNo++) { pmenu->attach (*Gtk::manage(amiExtProg[itemNo] = new Gtk::MenuItem ((*it).first)), 0, 1, p, p + 1); p++; @@ -419,9 +420,11 @@ FileBrowser::FileBrowser () : amiExtProg[i]->signal_activate().connect (sigc::bind(sigc::mem_fun(*this, &FileBrowser::menuItemActivated), amiExtProg[i])); } - if (miOpenDefaultViewer != nullptr) { +#ifdef WIN32 + if (miOpenDefaultViewer) { miOpenDefaultViewer->signal_activate().connect (sigc::bind(sigc::mem_fun(*this, &FileBrowser::menuItemActivated), miOpenDefaultViewer)); } +#endif trash->signal_activate().connect (sigc::bind(sigc::mem_fun(*this, &FileBrowser::menuItemActivated), trash)); untrash->signal_activate().connect (sigc::bind(sigc::mem_fun(*this, &FileBrowser::menuItemActivated), untrash)); @@ -984,8 +987,10 @@ void FileBrowser::menuItemActivated (Gtk::MenuItem* m) tbl->clearFromCacheRequested (mselected, true); //queue_draw (); - } else if (miOpenDefaultViewer != nullptr && m == miOpenDefaultViewer) { +#ifdef WIN32 + } else if (miOpenDefaultViewer && m == miOpenDefaultViewer) { openDefaultViewer(1); +#endif } } @@ -1091,6 +1096,7 @@ void FileBrowser::partPasteProfile () } } +#ifdef WIN32 void FileBrowser::openDefaultViewer (int destination) { bool success = true; @@ -1104,10 +1110,11 @@ void FileBrowser::openDefaultViewer (int destination) } if (!success) { - Gtk::MessageDialog msgd (M("MAIN_MSG_IMAGEUNPROCESSED"), true, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true); + Gtk::MessageDialog msgd(getToplevelWindow(this), M("MAIN_MSG_IMAGEUNPROCESSED"), true, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true); msgd.run (); } } +#endif bool FileBrowser::keyPressed (GdkEventKey* event) { diff --git a/rtgui/filebrowser.h b/rtgui/filebrowser.h index 4efdb7219..2c5acfccb 100644 --- a/rtgui/filebrowser.h +++ b/rtgui/filebrowser.h @@ -190,7 +190,9 @@ public: void selectImage (Glib::ustring fname); void openNextPreviousEditorImage (Glib::ustring fname, eRTNav eNextPrevious); +#ifdef WIN32 void openDefaultViewer (int destination); +#endif void thumbRearrangementNeeded (); void _thumbRearrangementNeeded ();