]> git.saurik.com Git - wxWidgets.git/blobdiff - src/motif/mdi.cpp
-start experimental use of RunApplicationEventLoop,
[wxWidgets.git] / src / motif / mdi.cpp
index ef6cb3a19289acef4bacfcafc13b1343db5f8564..22a20fb5e8b8cf5c537ddee46a89c197bb9948f8 100644 (file)
@@ -9,19 +9,22 @@
 // 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"
+
 #ifdef __VMS
 #define XtDisplay XTDISPLAY
 #define XtWindow XTWINDOW
 #endif
 
-#include "wx/tab.h"
 #include "wx/mdi.h"
 #include "wx/menu.h"
 #include "wx/settings.h"
+#include "wx/icon.h"
 
 #ifdef __VMS__
 #pragma message disable nosimpint
@@ -391,7 +394,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();
@@ -426,8 +428,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)
@@ -546,9 +555,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
@@ -634,17 +648,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);