/* Callback for wxFrame. This very strange beast has to be used because
* C++ has no virtual methods in a constructor. We have to emulate a
- * virtual function here as wxWindows requires different ways to insert
+ * virtual function here as wxWidgets requires different ways to insert
* a child in container classes. */
static void wxInsertChildInFrame( wxFrame* parent, wxWindow* child )
if (m_frameToolBar) m_frameToolBar->OnInternalIdle();
#endif
#if wxUSE_STATUSBAR
- if (m_frameStatusBar) m_frameStatusBar->OnInternalIdle();
+ if (m_frameStatusBar)
+ {
+ m_frameStatusBar->OnInternalIdle();
+
+ // There may be controls in the status bar that
+ // need to be updated
+ for ( wxWindowList::compatibility_iterator node = m_frameStatusBar->GetChildren().GetFirst();
+ node;
+ node = node->GetNext() )
+ {
+ wxWindow *child = node->GetData();
+ child->OnInternalIdle();
+ }
+ }
#endif
}
GTK_SIGNAL_FUNC(gtk_menu_detached_callback), (gpointer)this );
}
- m_frameMenuBar->Show( TRUE );
+ gtk_widget_show( m_frameMenuBar->m_widget );
UpdateMenuBarSize();
}
void wxFrame::UpdateMenuBarSize()
{
- wxASSERT_MSG( m_frameMenuBar, _T("Updating non existant menubar?") );
-
GtkRequisition req;
req.width = 2;
req.height = 2;
-
+
+ // this is called after Remove with a NULL m_frameMenuBar
+ if ( m_frameMenuBar )
(* GTK_WIDGET_CLASS( GTK_OBJECT_GET_CLASS(m_frameMenuBar->m_widget) )->size_request )
(m_frameMenuBar->m_widget, &req );
return wxFrameBase::CreateStatusBar( number, style, id, name );
}
+void wxFrame::SetStatusBar(wxStatusBar *statbar)
+{
+ bool hadStatBar = m_frameStatusBar != NULL;
+
+ wxFrameBase::SetStatusBar(statbar);
+
+ if (hadStatBar && !m_frameStatusBar)
+ GtkUpdateSize();
+}
+
void wxFrame::PositionStatusBar()
{
if ( !m_frameStatusBar )