X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/222ed1d678dff2f5c3c4164321dd05e8f47de487..7acf6a921e69c3382706c2cfc35e826d08004231:/src/gtk/mdi.cpp diff --git a/src/gtk/mdi.cpp b/src/gtk/mdi.cpp index 8cf797cd63..36b2f789f0 100644 --- a/src/gtk/mdi.cpp +++ b/src/gtk/mdi.cpp @@ -7,13 +7,17 @@ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma implementation "mdi.h" #endif +// For compilers that support precompilation, includes "wx.h". +#include "wx/wxprec.h" + #include "wx/mdi.h" +#include "wx/notebook.h" -#if wxUSE_MDI_ARCHITECTURE +#if wxUSE_MDI #include "wx/dialog.h" #include "wx/menu.h" @@ -79,8 +83,11 @@ gtk_mdi_page_change_callback( GtkNotebook *WXUNUSED(widget), while (node) { wxMDIChildFrame *child_frame = wxDynamicCast( node->GetData(), wxMDIChildFrame ); - - wxASSERT_MSG( child_frame, _T("child is not a wxMDIChildFrame") ); + // CE: we come here in the destructor with a null child_frame - I think because + // gtk_signal_connect( GTK_OBJECT(m_widget), "switch_page", (see below) + // isn't deleted early enough + if (!child_frame) + return ; if (child_frame->m_page == page) { @@ -161,6 +168,21 @@ void wxMDIParentFrame::OnInternalIdle() GtkNotebook *notebook = GTK_NOTEBOOK(m_clientWindow->m_widget); gtk_notebook_set_page( notebook, g_list_length( notebook->children ) - 1 ); + /* need to set the menubar of the child */ + wxMDIChildFrame *active_child_frame = GetActiveChild(); + if (active_child_frame != NULL) + { + wxMenuBar *menu_bar = active_child_frame->m_menuBar; + if (menu_bar) + { + menu_bar->m_width = m_width; + menu_bar->m_height = wxMENU_HEIGHT; + gtk_pizza_set_size( GTK_PIZZA(m_mainWidget), + menu_bar->m_widget, + 0, 0, m_width, wxMENU_HEIGHT ); + menu_bar->SetInvokingWindow(active_child_frame); + } + } m_justInserted = false; return; } @@ -316,7 +338,7 @@ wxMDIChildFrame::~wxMDIChildFrame() { if (m_menuBar) delete m_menuBar; -} +} bool wxMDIChildFrame::Create( wxMDIParentFrame *parent, wxWindowID id, const wxString& title, @@ -471,6 +493,7 @@ wxMDIClientWindow::wxMDIClientWindow( wxMDIParentFrame *parent, long style ) wxMDIClientWindow::~wxMDIClientWindow() { + } bool wxMDIClientWindow::CreateClient( wxMDIParentFrame *parent, long style )