]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/mdi.cpp
Added no-remap system option so colourful toolbar buttons
[wxWidgets.git] / src / msw / mdi.cpp
index d87cf8ab65bee44914e0b7a369cb9d6215734a89..edb246d7500aaf3e647d0d2f0362cd17d9a84fdb 100644 (file)
@@ -17,7 +17,7 @@
 // headers
 // ---------------------------------------------------------------------------
 
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
     #pragma implementation "mdi.h"
 #endif
 
@@ -28,6 +28,8 @@
     #pragma hdrstop
 #endif
 
+#if wxUSE_MDI_ARCHITECTURE && !defined(__WXUNIVERSAL__)
+
 #ifndef WX_PRECOMP
     #include "wx/setup.h"
     #include "wx/frame.h"
@@ -43,8 +45,6 @@
     #include "wx/log.h"
 #endif
 
-#if wxUSE_MDI_ARCHITECTURE && !defined(__WXUNIVERSAL__)
-
 #include "wx/mdi.h"
 #include "wx/msw/private.h"
 
@@ -68,11 +68,7 @@ extern wxMenu *wxCurrentPopupMenu;
 extern const wxChar *wxMDIFrameClassName;   // from app.cpp
 extern const wxChar *wxMDIChildFrameClassName;
 extern const wxChar *wxMDIChildFrameClassNameNoRedraw;
-#ifdef __DIGITALMARS__
-extern "C" void wxAssociateWinWithHandle(HWND hWnd, wxWindow *win);
-#else
 extern void wxAssociateWinWithHandle(HWND hWnd, wxWindow *win);
-#endif
 extern void wxRemoveHandleAssociation(wxWindow *win);
 
 static HWND invalidHandle = 0;
@@ -237,12 +233,12 @@ bool wxMDIParentFrame::Create(wxWindow *parent,
 
 wxMDIParentFrame::~wxMDIParentFrame()
 {
-    DestroyChildren();
-
-    // already delete by DestroyChildren()
+    // see comment in ~wxMDIChildFrame
     m_frameToolBar = NULL;
     m_frameStatusBar = NULL;
 
+    DestroyChildren();
+
     if (m_windowMenu)
     {
         delete m_windowMenu;
@@ -346,8 +342,8 @@ void wxMDIParentFrame::OnSysColourChanged(wxSysColourChangedEvent& event)
 
 WXHICON wxMDIParentFrame::GetDefaultIcon() const
 {
-    return (WXHICON)(wxSTD_MDIPARENTFRAME_ICON ? wxSTD_MDIPARENTFRAME_ICON
-                                               : wxDEFAULT_MDIPARENTFRAME_ICON);
+    // we don't have any standard icons (any more)
+    return (WXHICON)0;
 }
 
 // ---------------------------------------------------------------------------
@@ -562,7 +558,7 @@ bool wxMDIParentFrame::HandleCommand(WXWORD id, WXWORD cmd, WXHWND hwnd)
 
     if ( IsMdiCommandId(id) )
     {
-        wxWindowList::Node *node = GetChildren().GetFirst();
+        wxWindowList::compatibility_iterator node = GetChildren().GetFirst();
         while ( node )
         {
             wxWindow *child = node->GetData();
@@ -675,9 +671,9 @@ bool wxMDIChildFrame::Create(wxMDIParentFrame *parent,
 
   MDICREATESTRUCT mcs;
 
-  mcs.szClass = style & wxNO_FULL_REPAINT_ON_RESIZE
-                    ? wxMDIChildFrameClassNameNoRedraw
-                    : wxMDIChildFrameClassName;
+  mcs.szClass = style & wxFULL_REPAINT_ON_RESIZE
+                    ? wxMDIChildFrameClassName
+                    : wxMDIChildFrameClassNameNoRedraw;
   mcs.szTitle = title;
   mcs.hOwner = wxGetInstance();
   if (x > -1)
@@ -700,7 +696,7 @@ bool wxMDIChildFrame::Create(wxMDIParentFrame *parent,
   else
       mcs.cy = CW_USEDEFAULT;
 
-  DWORD msflags = WS_OVERLAPPED | WS_CLIPCHILDREN | WS_THICKFRAME | WS_VISIBLE ;
+  DWORD msflags = WS_OVERLAPPED | WS_CLIPCHILDREN | WS_VISIBLE ;
   if (style & wxMINIMIZE_BOX)
     msflags |= WS_MINIMIZEBOX;
   if (style & wxMAXIMIZE_BOX)
@@ -734,12 +730,13 @@ bool wxMDIChildFrame::Create(wxMDIParentFrame *parent,
 
 wxMDIChildFrame::~wxMDIChildFrame()
 {
-    DestroyChildren();
-
-    // already deleted by DestroyChildren()
+    // will be destroyed by DestroyChildren() but reset them before calling it
+    // to avoid using dangling pointers if a callback comes in the meanwhile
     m_frameToolBar = NULL;
     m_frameStatusBar = NULL;
 
+    DestroyChildren();
+
     RemoveWindowMenu(NULL, m_hMenu);
 
     MSWDestroyWindow();
@@ -815,8 +812,8 @@ void wxMDIChildFrame::InternalSetMenuBar()
 
 WXHICON wxMDIChildFrame::GetDefaultIcon() const
 {
-    return (WXHICON)(wxSTD_MDICHILDFRAME_ICON ? wxSTD_MDICHILDFRAME_ICON
-                                              : wxDEFAULT_MDICHILDFRAME_ICON);
+    // we don't have any standard icons (any more)
+    return (WXHICON)0;
 }
 
 // ---------------------------------------------------------------------------
@@ -1068,7 +1065,7 @@ bool wxMDIChildFrame::HandleGetMinMaxInfo(void *mmInfo)
         processed = true;
     }
 
-    return true;
+    return processed;
 }
 
 // ---------------------------------------------------------------------------
@@ -1250,7 +1247,7 @@ void wxMDIClientWindow::DoSetSize(int x, int y, int width, int height, int sizeF
     {
         if (GetParent())
         {
-            wxWindowList::Node *node = GetParent()->GetChildren().GetFirst();
+            wxWindowList::compatibility_iterator node = GetParent()->GetChildren().GetFirst();
             while (node)
             {
                 wxWindow *child = node->GetData();