X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f089940f68da55dce4070bc6d67a936b076a276f..74b965198ce3a4257deac901b6f7517e6447ca0f:/src/gtk/window.cpp?ds=inline diff --git a/src/gtk/window.cpp b/src/gtk/window.cpp index e3fee8bcdf..e1b0b87036 100644 --- a/src/gtk/window.cpp +++ b/src/gtk/window.cpp @@ -2210,6 +2210,12 @@ wxWindowGTK::~wxWindowGTK() // delete before the widgets to avoid a crash on solaris delete m_imData; + // avoid problem with GTK+ 2.18 where a frozen window causes the whole + // TLW to be frozen, and if the window is then destroyed, nothing ever + // gets painted again + if (IsFrozen()) + DoThaw(); + if (m_widget) { // Note that gtk_widget_destroy() does not destroy the widget, it just @@ -3964,23 +3970,6 @@ bool wxWindowGTK::SetBackgroundStyle(wxBackgroundStyle style) #if wxUSE_MENUS_NATIVE -static void SetInvokingWindow( wxMenu *menu, wxWindow* win ) -{ - menu->SetInvokingWindow( win ); - - wxMenuItemList::compatibility_iterator node = menu->GetMenuItems().GetFirst(); - while (node) - { - wxMenuItem *menuitem = node->GetData(); - if (menuitem->IsSubMenu()) - { - SetInvokingWindow( menuitem->GetSubMenu(), win ); - } - - node = node->GetNext(); - } -} - extern "C" { static void wxPopupMenuPositionCallback( GtkMenu *menu, @@ -4007,10 +3996,6 @@ bool wxWindowGTK::DoPopupMenu( wxMenu *menu, int x, int y ) { wxCHECK_MSG( m_widget != NULL, false, wxT("invalid window") ); - wxCHECK_MSG( menu != NULL, false, wxT("invalid popup-menu") ); - - SetInvokingWindow( menu, this ); - menu->UpdateUI(); wxPoint pos; @@ -4440,9 +4425,9 @@ static void wx_frozen_widget_realize(GtkWidget* w, wxWindowGTK* win) win ); - GdkWindow* window = win->GTKGetDrawingWindow(); - if (window == NULL) - window = w->window; + GdkWindow* window = w->window; + if (w == win->m_wxwindow) + window = win->GTKGetDrawingWindow(); gdk_window_freeze_updates(window); } @@ -4467,9 +4452,9 @@ void wxWindowGTK::GTKFreezeWidget(GtkWidget *w) return; } - GdkWindow* window = GTKGetDrawingWindow(); - if (window == NULL) - window = w->window; + GdkWindow* window = w->window; + if (w == m_wxwindow) + window = GTKGetDrawingWindow(); gdk_window_freeze_updates(window); } @@ -4490,9 +4475,9 @@ void wxWindowGTK::GTKThawWidget(GtkWidget *w) return; } - GdkWindow* window = GTKGetDrawingWindow(); - if (window == NULL) - window = w->window; + GdkWindow* window = w->window; + if (w == m_wxwindow) + window = GTKGetDrawingWindow(); gdk_window_thaw_updates(window); }