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

This commit is contained in:
heckflosse 2018-05-09 22:28:59 +02:00
parent 4063842564
commit dfdf4bf39d
2 changed files with 19 additions and 10 deletions

View File

@ -127,6 +127,7 @@ void findOriginalEntries (const std::vector<ThumbBrowserEntryBase*>& 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)
{

View File

@ -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 ();