From 89c6e024423c3a4e899f90bfa4208dce57a7b8c1 Mon Sep 17 00:00:00 2001 From: Paul Cornett Date: Wed, 9 Mar 2011 17:22:43 +0000 Subject: [PATCH] add wxEVT_MAXIMIZE support to wxGTK git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67164 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- docs/changes.txt | 3 ++- interface/wx/event.h | 2 +- src/gtk/toplevel.cpp | 14 ++++++++++---- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 8687861a39..11cc48733e 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -461,7 +461,6 @@ All (GUI): - Added EVT_RIBBONBAR_TAB_LEFT_DCLICK event (snowleopard). - Fix display of right aligned columns in wxGenericListCtrl (jl). - Restore text drag-and-drop in wxSTC broken by Scintilla 2 update (Jens Lody). -- Improve wxGTK print/page setup dialog (rafravago). - Add support for id ranges to XRC (David Hart). - Added wxToolbook XRC handler (Andrea Zanellato). - Added wxDocManager::FindTemplate() (troelsk). @@ -479,7 +478,9 @@ All (GUI): GTK: +- Improve print/page setup dialog (rafravago). - Switch to GtkTooltip from deprecated GtkTooltips (Emilien Kia). +- wxTLW generates wxEVT_MAXIMIZE MSW: diff --git a/interface/wx/event.h b/interface/wx/event.h index 9ebf57c12d..9e5bb81323 100644 --- a/interface/wx/event.h +++ b/interface/wx/event.h @@ -1787,7 +1787,7 @@ public: not sent when the window is restored to its original size after it had been maximized, only a normal wxSizeEvent is generated in this case. - Currently this event is only generated in wxMSW, wxOSX/Cocoa and wxOS2 + Currently this event is only generated in wxMSW, wxGTK, wxOSX/Cocoa and wxOS2 ports so portable programs should only rely on receiving @c wxEVT_SIZE and not necessarily this event when the window is maximized. diff --git a/src/gtk/toplevel.cpp b/src/gtk/toplevel.cpp index 4e3e560323..28f4fafcea 100644 --- a/src/gtk/toplevel.cpp +++ b/src/gtk/toplevel.cpp @@ -383,6 +383,14 @@ gtk_frame_window_state_callback( GtkWidget* WXUNUSED(widget), if (event->changed_mask & GDK_WINDOW_STATE_ICONIFIED) win->SetIconizeState((event->new_window_state & GDK_WINDOW_STATE_ICONIFIED) != 0); + // 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); + } + return false; } } @@ -1210,10 +1218,8 @@ void wxTopLevelWindowGTK::Maximize(bool maximize) bool wxTopLevelWindowGTK::IsMaximized() const { - if(!m_widget->window) - return false; - - return gdk_window_get_state(m_widget->window) & GDK_WINDOW_STATE_MAXIMIZED; + return m_widget->window && + (gdk_window_get_state(m_widget->window) & GDK_WINDOW_STATE_MAXIMIZED); } void wxTopLevelWindowGTK::Restore() -- 2.45.2