]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/mdi.cpp
compilation problem under Windows fixed (Karsten, you should use a cast when
[wxWidgets.git] / src / gtk / mdi.cpp
index 4428a9edad71f9bd890e41dde5e36727643059f4..1d8c9ffb6223ff603603272ded13c2fc31729e9e 100644 (file)
@@ -14,6 +14,7 @@
 
 #include "wx/mdi.h"
 #include "wx/dialog.h"
+#include "wx/menu.h"
 #include "wx/gtk/win_gtk.h"
 
 //-----------------------------------------------------------------------------
@@ -171,11 +172,10 @@ void wxMDIParentFrame::OnSysColourChanged( wxSysColourChangedEvent& WXUNUSED(eve
 // wxMDIChildFrame
 //-----------------------------------------------------------------------------
 
-IMPLEMENT_DYNAMIC_CLASS(wxMDIChildFrame,wxPanel)
+IMPLEMENT_DYNAMIC_CLASS(wxMDIChildFrame,wxFrame)
   
-BEGIN_EVENT_TABLE(wxMDIChildFrame, wxPanel)
-  EVT_CLOSE(wxMDIChildFrame::OnCloseWindow)
-  EVT_SIZE(wxMDIChildFrame::OnSize)
+BEGIN_EVENT_TABLE(wxMDIChildFrame, wxFrame)
+  EVT_ACTIVATE(wxMDIChildFrame::OnActivate)
 END_EVENT_TABLE()
 
 wxMDIChildFrame::wxMDIChildFrame(void)
@@ -214,54 +214,19 @@ bool wxMDIChildFrame::Create( wxMDIParentFrame *parent,
       long style, const wxString& name )
 {
   m_title = title;
-  return wxPanel::Create( parent->GetClientWindow(), id, wxDefaultPosition, size, style, name );
+  return wxWindow::Create( parent->GetClientWindow(), id, wxDefaultPosition, size, style, name );
 };
 
-void wxMDIChildFrame::OnCloseWindow( wxCloseEvent &event )
+void wxMDIChildFrame::GetClientSize( int *width, int *height ) const
 {
-    if ( GetEventHandler()->OnClose() || event.GetForce())
-    {
-        this->Destroy();
-    }
-};
-
-void wxMDIChildFrame::OnSize( wxSizeEvent &WXUNUSED(event) )
-{
-  if ( GetAutoLayout() )
-    Layout();
-  else {
-    // no child: go out !
-    if (!GetChildren()->First())
-      return;
-      
-    // do we have exactly one child?
-    wxWindow *child = NULL;
-    for(wxNode *node = GetChildren()->First(); node; node = node->Next())
-    {
-      wxWindow *win = (wxWindow *)node->Data();
-      if (!IS_KIND_OF(win,wxFrame) && !IS_KIND_OF(win,wxDialog))
-      {
-        if ( child )  // it's the second one: do nothing
-          return;
-
-        child = win;
-      };
-    };
+  wxWindow::GetClientSize( width, height );
+}
 
-    // yes: set it's size to fill all the frame
-    int client_x, client_y;
-    GetClientSize(&client_x, &client_y);
-    child->SetSize( 1, 1, client_x-2, client_y);
-  }
-};
-bool wxMDIChildFrame::Destroy(void)
+void wxMDIChildFrame::AddChild( wxWindow *child )
 {
-  if (!wxPendingDelete.Member(this))
-    wxPendingDelete.Append(this);
-
-  return TRUE;
+  wxWindow::AddChild( child );
 }
-
+  
 static void SetInvokingWindow( wxMenu *menu, wxWindow *win )
 {
   menu->SetInvokingWindow( win );
@@ -302,10 +267,19 @@ void wxMDIChildFrame::SetMenuBar( wxMenuBar *menu_bar )
   }
 };
 
+wxMenuBar *wxMDIChildFrame::GetMenuBar()
+{
+  return m_menuBar;
+};
+
 void wxMDIChildFrame::Activate(void)
 {
 };
 
+void wxMDIChildFrame::OnActivate( wxActivateEvent &WXUNUSED(event) )
+{
+};
+
 //-----------------------------------------------------------------------------
 // wxMDIClientWindow
 //-----------------------------------------------------------------------------
@@ -372,6 +346,8 @@ void wxMDIClientWindow::AddChild( wxWindow *child )
   mdi_child->m_page = (GtkNotebookPage*) (g_list_last(GTK_NOTEBOOK(m_widget)->children)->data);
     
   gtk_notebook_set_page( GTK_NOTEBOOK(m_widget), m_children.Number()-1 );
+  
+  gtk_page_change_callback( NULL, mdi_child->m_page, 0, this );
 };