X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/7d5848668df9cd29d08c81b43ff459da946a21e4..5c250a10332dc17263c66deb629b5fa8c4320f8a:/src/msw/mdi.cpp diff --git a/src/msw/mdi.cpp b/src/msw/mdi.cpp index a00557187d..edb246d750 100644 --- a/src/msw/mdi.cpp +++ b/src/msw/mdi.cpp @@ -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" @@ -233,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; @@ -342,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; } // --------------------------------------------------------------------------- @@ -558,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(); @@ -671,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) @@ -696,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) @@ -730,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(); @@ -811,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; } // --------------------------------------------------------------------------- @@ -1064,7 +1065,7 @@ bool wxMDIChildFrame::HandleGetMinMaxInfo(void *mmInfo) processed = true; } - return true; + return processed; } // --------------------------------------------------------------------------- @@ -1246,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();