GdkEventConfigure *WXUNUSED(event),
wxTopLevelWindowGTK *win )
{
- if (!win->m_hasVMT || !win->IsShown())
+ if (!win->IsShown())
return FALSE;
wxPoint point;
// if maximized bit changed and it is now set
if (event->changed_mask & event->new_window_state & GDK_WINDOW_STATE_MAXIMIZED)
{
- wxMaximizeEvent event(win->GetId());
- event.SetEventObject(win);
- win->HandleWindowEvent(event);
+ wxMaximizeEvent evt(win->GetId());
+ evt.SetEventObject(win);
+ 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;
}
}
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))))
{
wxCHECK_RET( m_widget, wxT("invalid frame") );
- m_deferShowAllowed = true;
-
// deal with the position first
int old_x = m_x;
int old_y = m_y;
if (m_height < 1) m_height = 1;
if (m_width != oldSize.x || m_height != oldSize.y)
{
+ m_deferShowAllowed = true;
+
int w, h;
GTKDoGetSize(&w, &h);
gtk_window_resize(GTK_WINDOW(m_widget), w, h);