From 43f5c4930f3316a47f68b4a204366da52b5e4d33 Mon Sep 17 00:00:00 2001 From: Robert Roebling Date: Wed, 13 Sep 2000 11:45:43 +0000 Subject: [PATCH] Did the unmap/map trick for wxFrame::IsIconized(). git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@8350 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/gtk/frame.cpp | 37 +++++++++++++++++++++++++++++++++---- src/gtk1/frame.cpp | 37 +++++++++++++++++++++++++++++++++---- 2 files changed, 66 insertions(+), 8 deletions(-) diff --git a/src/gtk/frame.cpp b/src/gtk/frame.cpp index 8816caaa2b..43d5161b18 100644 --- a/src/gtk/frame.cpp +++ b/src/gtk/frame.cpp @@ -246,7 +246,7 @@ gtk_frame_configure_callback( GtkWidget *WXUNUSED(widget), GdkEventConfigure *ev /* we cannot MWM hints and icons before the widget has been realized, so we do this directly after realization */ -static gint +static void gtk_frame_realized_callback( GtkWidget * WXUNUSED(widget), wxFrame *win ) { if (g_isIdle) @@ -321,8 +321,26 @@ gtk_frame_realized_callback( GtkWidget * WXUNUSED(widget), wxFrame *win ) node = node->GetNext(); } +} - return FALSE; +//----------------------------------------------------------------------------- +// "map_event" from m_widget +//----------------------------------------------------------------------------- + +static void +gtk_frame_map_callback( GtkWidget * WXUNUSED(widget), wxFrame *win ) +{ + win->m_isIconized = FALSE; +} + +//----------------------------------------------------------------------------- +// "unmap_event" from m_widget +//----------------------------------------------------------------------------- + +static void +gtk_frame_unmap_callback( GtkWidget * WXUNUSED(widget), wxFrame *win ) +{ + win->m_isIconized = TRUE; } // ---------------------------------------------------------------------------- @@ -398,6 +416,8 @@ void wxFrame::Init() m_menuBarDetached = FALSE; m_toolBarDetached = FALSE; m_insertInClientArea = TRUE; + m_isIconized = FALSE; + m_fsIsShowing = FALSE; } bool wxFrame::Create( wxWindow *parent, @@ -411,7 +431,6 @@ bool wxFrame::Create( wxWindow *parent, wxTopLevelWindows.Append( this ); m_needParent = FALSE; - m_fsIsShowing = FALSE; if (!PreCreation( parent, pos, size ) || !CreateBase( parent, id, pos, size, style, wxDefaultValidator, name )) @@ -491,6 +510,16 @@ bool wxFrame::Create( wxWindow *parent, gtk_signal_connect( GTK_OBJECT(m_widget), "configure_event", GTK_SIGNAL_FUNC(gtk_frame_configure_callback), (gpointer)this ); + /* map and unmap for iconized state */ + gtk_signal_connect( GTK_OBJECT(m_widget), "map_event", + GTK_SIGNAL_FUNC(gtk_frame_map_callback), (gpointer)this ); + gtk_signal_connect( GTK_OBJECT(m_widget), "unmap_event", + GTK_SIGNAL_FUNC(gtk_frame_unmap_callback), (gpointer)this ); + + /* the only way to get the window size is to connect to this event */ + gtk_signal_connect( GTK_OBJECT(m_widget), "configure_event", + GTK_SIGNAL_FUNC(gtk_frame_configure_callback), (gpointer)this ); + /* disable native tab traversal */ gtk_signal_connect( GTK_OBJECT(m_widget), "focus", GTK_SIGNAL_FUNC(gtk_frame_focus_callback), (gpointer)this ); @@ -1129,5 +1158,5 @@ void wxFrame::Iconize( bool iconize ) bool wxFrame::IsIconized() const { - return FALSE; + return m_isIconized; } diff --git a/src/gtk1/frame.cpp b/src/gtk1/frame.cpp index 8816caaa2b..43d5161b18 100644 --- a/src/gtk1/frame.cpp +++ b/src/gtk1/frame.cpp @@ -246,7 +246,7 @@ gtk_frame_configure_callback( GtkWidget *WXUNUSED(widget), GdkEventConfigure *ev /* we cannot MWM hints and icons before the widget has been realized, so we do this directly after realization */ -static gint +static void gtk_frame_realized_callback( GtkWidget * WXUNUSED(widget), wxFrame *win ) { if (g_isIdle) @@ -321,8 +321,26 @@ gtk_frame_realized_callback( GtkWidget * WXUNUSED(widget), wxFrame *win ) node = node->GetNext(); } +} - return FALSE; +//----------------------------------------------------------------------------- +// "map_event" from m_widget +//----------------------------------------------------------------------------- + +static void +gtk_frame_map_callback( GtkWidget * WXUNUSED(widget), wxFrame *win ) +{ + win->m_isIconized = FALSE; +} + +//----------------------------------------------------------------------------- +// "unmap_event" from m_widget +//----------------------------------------------------------------------------- + +static void +gtk_frame_unmap_callback( GtkWidget * WXUNUSED(widget), wxFrame *win ) +{ + win->m_isIconized = TRUE; } // ---------------------------------------------------------------------------- @@ -398,6 +416,8 @@ void wxFrame::Init() m_menuBarDetached = FALSE; m_toolBarDetached = FALSE; m_insertInClientArea = TRUE; + m_isIconized = FALSE; + m_fsIsShowing = FALSE; } bool wxFrame::Create( wxWindow *parent, @@ -411,7 +431,6 @@ bool wxFrame::Create( wxWindow *parent, wxTopLevelWindows.Append( this ); m_needParent = FALSE; - m_fsIsShowing = FALSE; if (!PreCreation( parent, pos, size ) || !CreateBase( parent, id, pos, size, style, wxDefaultValidator, name )) @@ -491,6 +510,16 @@ bool wxFrame::Create( wxWindow *parent, gtk_signal_connect( GTK_OBJECT(m_widget), "configure_event", GTK_SIGNAL_FUNC(gtk_frame_configure_callback), (gpointer)this ); + /* map and unmap for iconized state */ + gtk_signal_connect( GTK_OBJECT(m_widget), "map_event", + GTK_SIGNAL_FUNC(gtk_frame_map_callback), (gpointer)this ); + gtk_signal_connect( GTK_OBJECT(m_widget), "unmap_event", + GTK_SIGNAL_FUNC(gtk_frame_unmap_callback), (gpointer)this ); + + /* the only way to get the window size is to connect to this event */ + gtk_signal_connect( GTK_OBJECT(m_widget), "configure_event", + GTK_SIGNAL_FUNC(gtk_frame_configure_callback), (gpointer)this ); + /* disable native tab traversal */ gtk_signal_connect( GTK_OBJECT(m_widget), "focus", GTK_SIGNAL_FUNC(gtk_frame_focus_callback), (gpointer)this ); @@ -1129,5 +1158,5 @@ void wxFrame::Iconize( bool iconize ) bool wxFrame::IsIconized() const { - return FALSE; + return m_isIconized; } -- 2.45.2