]> git.saurik.com Git - wxWidgets.git/blobdiff - src/motif/mdi.cpp
implemented Freeze/Thaw() (patch 922156)
[wxWidgets.git] / src / motif / mdi.cpp
index 95be276fbc57694a223fa8217731e05b67cd85ed..87a201a0e2afc6582dcb17c0009a7b8e102dc53d 100644 (file)
@@ -9,7 +9,7 @@
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
 #pragma implementation "mdi.h"
 #endif
 
@@ -18,7 +18,6 @@
 #define XtWindow XTWINDOW
 #endif
 
-#include "wx/tab.h"
 #include "wx/mdi.h"
 #include "wx/menu.h"
 #include "wx/settings.h"
@@ -392,7 +391,6 @@ bool wxMDIChildFrame::Create(wxMDIParentFrame *parent,
     XtAddEventHandler((Widget) m_mainWidget, ExposureMask,FALSE,
         wxUniversalRepaintProc, (XtPointer) this);
 
-    SetCanAddEventHandler(TRUE);
     AttachWidget (parent, m_mainWidget, (WXWidget) NULL, pos.x, pos.y, size.x, size.y);
 
     ChangeBackgroundColour();
@@ -427,8 +425,15 @@ wxMDIChildFrame::~wxMDIChildFrame()
         wxMDIClientWindow* clientWindow = parentFrame->GetClientWindow();
 
         // Remove page if still there
-        if (clientWindow->RemovePage(this))
-            clientWindow->Refresh();
+        {
+            int i = clientWindow->FindPage(this);
+
+            if (i != -1)
+            {
+                clientWindow->RemovePage(i);
+                clientWindow->Refresh();
+            }
+        }
 
         // Set the selection to the first remaining page
         if (clientWindow->GetPageCount() > 0)
@@ -547,9 +552,14 @@ void wxMDIChildFrame::SetTitle(const wxString& title)
 {
     wxTopLevelWindow::SetTitle( title );
     wxMDIClientWindow* clientWindow = GetMDIParentFrame()->GetClientWindow();
-    int pageNo = clientWindow->FindPagePosition(this);
-    if (pageNo > -1)
-        clientWindow->SetPageText(pageNo, title);
+
+    // Remove page if still there
+    {
+        int i = clientWindow->FindPage(this);
+
+        if (i != -1)
+            clientWindow->SetPageText(i, title);
+    }
 }
 
 // MDI operations
@@ -635,17 +645,24 @@ bool wxMDIClientWindow::CreateClient(wxMDIParentFrame *parent, long style)
     if (success)
     {
         wxFont font(10, wxSWISS, wxNORMAL, wxNORMAL);
-        wxFont selFont(10, wxSWISS, wxNORMAL, wxBOLD);
-        GetTabView()->SetTabFont(font);
-        GetTabView()->SetSelectedTabFont(selFont);
-        GetTabView()->SetTabSize(120, 18);
-        GetTabView()->SetTabSelectionHeight(20);
+        SetFont(font);
         return TRUE;
     }
     else
         return FALSE;
 }
 
+int wxMDIClientWindow::FindPage(const wxNotebookPage* page)
+{
+    for (int i = GetPageCount() - 1; i >= 0; --i)
+    {
+        if (GetPage(i) == page)
+            return i;
+    }
+
+    return -1;
+}
+
 void wxMDIClientWindow::DoSetSize(int x, int y, int width, int height, int sizeFlags)
 {
     wxWindow::DoSetSize(x, y, width, height, sizeFlags);