]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk1/mdi.cpp
Fixed gtk 1.0.6 corruped menu entry names.
[wxWidgets.git] / src / gtk1 / mdi.cpp
index 5df3bbfd17db05b47c26e4f7d7369a5bceb55a96..064376b54c6a12a25c3692ab6a811bcf4a011cb8 100644 (file)
 
 const int wxMENU_HEIGHT = 27;
 
+//-----------------------------------------------------------------------------
+// idle system
+//-----------------------------------------------------------------------------
+
+extern void wxapp_install_idle_handler();
+extern bool g_isIdle;
+
 //-----------------------------------------------------------------------------
 // globals
 //-----------------------------------------------------------------------------
@@ -112,6 +119,7 @@ void wxMDIParentFrame::OnInternalIdle()
     wxFrame::OnInternalIdle();
 
     wxMDIChildFrame *active_child_frame = GetActiveChild();
+    bool visible_child_menu = FALSE;
 
     wxNode *node = m_clientWindow->m_children.First();
     while (node)
@@ -120,7 +128,10 @@ void wxMDIParentFrame::OnInternalIdle()
         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 );
         }
@@ -128,7 +139,7 @@ void wxMDIParentFrame::OnInternalIdle()
     }
 
     /* 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
@@ -310,6 +321,8 @@ void wxMDIChildFrame::OnActivate( wxActivateEvent &WXUNUSED(event) )
 
 static void gtk_page_size_callback( GtkWidget *WXUNUSED(widget), GtkAllocation* alloc, wxWindow *win )
 {
+    if (g_isIdle) wxapp_install_idle_handler();
+
     if ((win->m_x == alloc->x) &&
         (win->m_y == alloc->y) &&
         (win->m_width == alloc->width) &&
@@ -331,7 +344,7 @@ static void wxInsertChildInMDI( wxMDIClientWindow* parent, wxMDIChildFrame* chil
     wxString s = child->m_title;
     if (s.IsNull()) s = _("MDI child");
 
-    GtkWidget *label_widget = gtk_label_new( s );
+    GtkWidget *label_widget = gtk_label_new( s.mbc_str() );
     gtk_misc_set_alignment( GTK_MISC(label_widget), 0.0, 0.5 );
 
     gtk_signal_connect( GTK_OBJECT(child->m_widget), "size_allocate",