Disable Unity global menu while native modal dialogs are shown in wxGTK.

We need to use wxOpenModalDialogLocker even with native GTK+ dialogs to
prevent the menu commands from being available while they're shown, so do it
in wxMessageDialog and wxColourDialog which call gtk_dialog_run().

Closes #14823.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73690 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2013-03-21 22:36:46 +00:00
parent d3bd8b1a48
commit 3c2f3a60d1
2 changed files with 6 additions and 0 deletions

View File

@ -28,6 +28,7 @@
#include <gtk/gtk.h> #include <gtk/gtk.h>
#include "wx/gtk/private.h" #include "wx/gtk/private.h"
#include "wx/gtk/private/gtk2-compat.h" #include "wx/gtk/private/gtk2-compat.h"
#include "wx/gtk/private/dialogcount.h"
#if wxUSE_LIBHILDON #if wxUSE_LIBHILDON
#include <hildon-widgets/hildon-color-selector.h> #include <hildon-widgets/hildon-color-selector.h>
@ -87,6 +88,8 @@ int wxColourDialog::ShowModal()
ColourDataToDialog(); ColourDataToDialog();
wxOpenModalDialogLocker modalLocker;
gint result = gtk_dialog_run(GTK_DIALOG(m_widget)); gint result = gtk_dialog_run(GTK_DIALOG(m_widget));
gtk_widget_hide(m_widget); gtk_widget_hide(m_widget);

View File

@ -30,6 +30,7 @@
#include "wx/gtk/private.h" #include "wx/gtk/private.h"
#include "wx/gtk/private/messagetype.h" #include "wx/gtk/private/messagetype.h"
#include "wx/gtk/private/mnemonics.h" #include "wx/gtk/private/mnemonics.h"
#include "wx/gtk/private/dialogcount.h"
#if wxUSE_LIBHILDON #if wxUSE_LIBHILDON
#include <hildon-widgets/hildon-note.h> #include <hildon-widgets/hildon-note.h>
@ -295,6 +296,8 @@ int wxMessageDialog::ShowModal()
if (m_parent) if (m_parent)
gtk_window_present( GTK_WINDOW(m_parent->m_widget) ); gtk_window_present( GTK_WINDOW(m_parent->m_widget) );
wxOpenModalDialogLocker modalLocker;
gint result = gtk_dialog_run(GTK_DIALOG(m_widget)); gint result = gtk_dialog_run(GTK_DIALOG(m_widget));
GTKDisconnect(m_widget); GTKDisconnect(m_widget);
gtk_widget_destroy(m_widget); gtk_widget_destroy(m_widget);