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
This commit is contained in:
Robert Roebling 2000-09-13 11:45:43 +00:00
parent 8088e4c628
commit 43f5c4930f
2 changed files with 66 additions and 8 deletions

View File

@ -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, /* we cannot MWM hints and icons before the widget has been realized,
so we do this directly after realization */ so we do this directly after realization */
static gint static void
gtk_frame_realized_callback( GtkWidget * WXUNUSED(widget), wxFrame *win ) gtk_frame_realized_callback( GtkWidget * WXUNUSED(widget), wxFrame *win )
{ {
if (g_isIdle) if (g_isIdle)
@ -321,8 +321,26 @@ gtk_frame_realized_callback( GtkWidget * WXUNUSED(widget), wxFrame *win )
node = node->GetNext(); 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_menuBarDetached = FALSE;
m_toolBarDetached = FALSE; m_toolBarDetached = FALSE;
m_insertInClientArea = TRUE; m_insertInClientArea = TRUE;
m_isIconized = FALSE;
m_fsIsShowing = FALSE;
} }
bool wxFrame::Create( wxWindow *parent, bool wxFrame::Create( wxWindow *parent,
@ -411,7 +431,6 @@ bool wxFrame::Create( wxWindow *parent,
wxTopLevelWindows.Append( this ); wxTopLevelWindows.Append( this );
m_needParent = FALSE; m_needParent = FALSE;
m_fsIsShowing = FALSE;
if (!PreCreation( parent, pos, size ) || if (!PreCreation( parent, pos, size ) ||
!CreateBase( parent, id, pos, size, style, wxDefaultValidator, name )) !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_connect( GTK_OBJECT(m_widget), "configure_event",
GTK_SIGNAL_FUNC(gtk_frame_configure_callback), (gpointer)this ); 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 */ /* disable native tab traversal */
gtk_signal_connect( GTK_OBJECT(m_widget), "focus", gtk_signal_connect( GTK_OBJECT(m_widget), "focus",
GTK_SIGNAL_FUNC(gtk_frame_focus_callback), (gpointer)this ); GTK_SIGNAL_FUNC(gtk_frame_focus_callback), (gpointer)this );
@ -1129,5 +1158,5 @@ void wxFrame::Iconize( bool iconize )
bool wxFrame::IsIconized() const bool wxFrame::IsIconized() const
{ {
return FALSE; return m_isIconized;
} }

View File

@ -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, /* we cannot MWM hints and icons before the widget has been realized,
so we do this directly after realization */ so we do this directly after realization */
static gint static void
gtk_frame_realized_callback( GtkWidget * WXUNUSED(widget), wxFrame *win ) gtk_frame_realized_callback( GtkWidget * WXUNUSED(widget), wxFrame *win )
{ {
if (g_isIdle) if (g_isIdle)
@ -321,8 +321,26 @@ gtk_frame_realized_callback( GtkWidget * WXUNUSED(widget), wxFrame *win )
node = node->GetNext(); 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_menuBarDetached = FALSE;
m_toolBarDetached = FALSE; m_toolBarDetached = FALSE;
m_insertInClientArea = TRUE; m_insertInClientArea = TRUE;
m_isIconized = FALSE;
m_fsIsShowing = FALSE;
} }
bool wxFrame::Create( wxWindow *parent, bool wxFrame::Create( wxWindow *parent,
@ -411,7 +431,6 @@ bool wxFrame::Create( wxWindow *parent,
wxTopLevelWindows.Append( this ); wxTopLevelWindows.Append( this );
m_needParent = FALSE; m_needParent = FALSE;
m_fsIsShowing = FALSE;
if (!PreCreation( parent, pos, size ) || if (!PreCreation( parent, pos, size ) ||
!CreateBase( parent, id, pos, size, style, wxDefaultValidator, name )) !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_connect( GTK_OBJECT(m_widget), "configure_event",
GTK_SIGNAL_FUNC(gtk_frame_configure_callback), (gpointer)this ); 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 */ /* disable native tab traversal */
gtk_signal_connect( GTK_OBJECT(m_widget), "focus", gtk_signal_connect( GTK_OBJECT(m_widget), "focus",
GTK_SIGNAL_FUNC(gtk_frame_focus_callback), (gpointer)this ); GTK_SIGNAL_FUNC(gtk_frame_focus_callback), (gpointer)this );
@ -1129,5 +1158,5 @@ void wxFrame::Iconize( bool iconize )
bool wxFrame::IsIconized() const bool wxFrame::IsIconized() const
{ {
return FALSE; return m_isIconized;
} }