X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/7d1214cd7298f63d03b8f3686524c5f227fcd242..7bc572ec828824d8bdc9168a5f6b69cd0102ee07:/src/gtk/toplevel.cpp diff --git a/src/gtk/toplevel.cpp b/src/gtk/toplevel.cpp index b561d5f61d..0fb82f4d64 100644 --- a/src/gtk/toplevel.cpp +++ b/src/gtk/toplevel.cpp @@ -269,7 +269,7 @@ gtk_frame_configure_callback( GtkWidget* widget, GdkEventConfigure *WXUNUSED(event), wxTopLevelWindowGTK *win ) { - if (!win->m_hasVMT || !win->IsShown()) + if (!win->IsShown()) return FALSE; wxPoint point; @@ -382,6 +382,9 @@ gtk_frame_window_state_callback( GtkWidget* WXUNUSED(widget), win->HandleWindowEvent(evt); } + if (event->changed_mask & GDK_WINDOW_STATE_FULLSCREEN) + win->m_fsIsShowing = (event->new_window_state & GDK_WINDOW_STATE_FULLSCREEN) != 0; + return false; } } @@ -640,6 +643,14 @@ bool wxTopLevelWindowGTK::Create( wxWindow *parent, g_signal_connect_after (m_widget, "focus_out_event", G_CALLBACK (gtk_frame_focus_out_callback), this); + // GTK processes key events at the top level first, which handles for + // menu accelerators and shortcuts before passing the event on to the + // focus child window to begin propagation. We want to propagate + // first, so we connect gtk_window_propagate_key_event to + // key_press_event. + g_signal_connect (m_widget, "key_press_event", + G_CALLBACK (gtk_window_propagate_key_event), NULL); + #ifdef GDK_WINDOWING_X11 #ifdef __WXGTK3__ if (GDK_IS_X11_SCREEN(gtk_window_get_screen(GTK_WINDOW(m_widget))))