X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ab2b3dd4a28041694104aa782fb0b4f91d410136..32a95f9f1a4a0ed0f569394e379f220666a8e47f:/src/gtk1/mdi.cpp diff --git a/src/gtk1/mdi.cpp b/src/gtk1/mdi.cpp index 82f5e1c260..3eb711da9d 100644 --- a/src/gtk1/mdi.cpp +++ b/src/gtk1/mdi.cpp @@ -25,7 +25,7 @@ // constants //----------------------------------------------------------------------------- -const int wxMENU_HEIGHT = 27; +const int wxMENU_HEIGHT = 27; //----------------------------------------------------------------------------- // globals @@ -77,14 +77,14 @@ bool wxMDIParentFrame::Create( wxWindow *parent, void wxMDIParentFrame::GtkOnSize( int x, int y, int width, int height ) { wxFrame::GtkOnSize( x, y, width, height ); - + wxMDIChildFrame *child_frame = GetActiveChild(); if (!child_frame) return; - + wxMenuBar *menu_bar = child_frame->m_menuBar; if (!menu_bar) return; if (!menu_bar->m_widget) return; - + menu_bar->m_x = 0; menu_bar->m_y = 0; menu_bar->m_width = m_width; @@ -103,32 +103,36 @@ void wxMDIParentFrame::OnInternalIdle() if (m_justInserted) { GtkNotebook *notebook = GTK_NOTEBOOK(m_clientWindow->m_widget); - gtk_notebook_set_page( notebook, g_list_length( notebook->children ) - 1 ); - - m_justInserted = FALSE; - return; + gtk_notebook_set_page( notebook, g_list_length( notebook->children ) - 1 ); + + m_justInserted = FALSE; + return; } - + wxFrame::OnInternalIdle(); wxMDIChildFrame *active_child_frame = GetActiveChild(); - + bool visible_child_menu = FALSE; + wxNode *node = m_clientWindow->m_children.First(); while (node) { wxMDIChildFrame *child_frame = (wxMDIChildFrame *)node->Data(); - if (child_frame->m_menuBar) - { - if (child_frame == active_child_frame) - gtk_widget_show( child_frame->m_menuBar->m_widget ); - else - gtk_widget_hide( child_frame->m_menuBar->m_widget ); - } + if (child_frame->m_menuBar) + { + if (child_frame == active_child_frame) + { + gtk_widget_show( child_frame->m_menuBar->m_widget ); + visible_child_menu = TRUE; + } + else + gtk_widget_hide( child_frame->m_menuBar->m_widget ); + } node = node->Next(); } - + /* show/hide parent menu bar as required */ - if (m_frameMenuBar) m_frameMenuBar->Show( (active_child_frame == NULL) ); + if (m_frameMenuBar) m_frameMenuBar->Show( !visible_child_menu ); } void wxMDIParentFrame::GetClientSize(int *width, int *height ) const @@ -139,16 +143,20 @@ void wxMDIParentFrame::GetClientSize(int *width, int *height ) const wxMDIChildFrame *wxMDIParentFrame::GetActiveChild() const { if (!m_clientWindow) return (wxMDIChildFrame*) NULL; - + GtkNotebook *notebook = GTK_NOTEBOOK(m_clientWindow->m_widget); if (!notebook) return (wxMDIChildFrame*) NULL; - + +#if (GTK_MINOR_VERSION > 0) gint i = gtk_notebook_get_current_page( notebook ); +#else + gint i = gtk_notebook_current_page( notebook ); +#endif if (i < 0) return (wxMDIChildFrame*) NULL; - + GtkNotebookPage* page = (GtkNotebookPage*) (g_list_nth(notebook->children,i)->data); if (!page) return (wxMDIChildFrame*) NULL; - + wxNode *node = m_clientWindow->m_children.First(); while (node) { @@ -157,7 +165,7 @@ wxMDIChildFrame *wxMDIParentFrame::GetActiveChild() const return child_frame; node = node->Next(); } - + return (wxMDIChildFrame*) NULL; } @@ -279,7 +287,7 @@ void wxMDIChildFrame::SetMenuBar( wxMenuBar *menu_bar ) } /* the menu bar of the child window is shown in idle time as needed */ - gtk_widget_hide( m_menuBar->m_widget ); + gtk_widget_hide( m_menuBar->m_widget ); /* insert the invisible menu bar into the _parent_ mdi frame */ gtk_myfixed_put( GTK_MYFIXED(mdi_frame->m_mainWidget), m_menuBar->m_widget, 0, 0 ); @@ -338,7 +346,7 @@ static void wxInsertChildInMDI( wxMDIClientWindow* parent, wxMDIChildFrame* chil gtk_notebook_append_page( notebook, child->m_widget, label_widget ); child->m_page = (GtkNotebookPage*) (g_list_last(notebook->children)->data); - + wxMDIParentFrame *parent_frame = (wxMDIParentFrame*) parent->m_parent; parent_frame->m_justInserted = TRUE; }