X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/57a7b7c1484fda95240972aae876bdbdbbc98344..cd2df130f8162dc2cf9794c1507cd4bddce53910:/src/msw/mdi.cpp diff --git a/src/msw/mdi.cpp b/src/msw/mdi.cpp index 774b215ca1..61653c10fe 100644 --- a/src/msw/mdi.cpp +++ b/src/msw/mdi.cpp @@ -34,13 +34,14 @@ #include "wx/mdi.h" #include "wx/msw/private.h" -#if USE_NATIVE_STATUSBAR +#if wxUSE_NATIVE_STATUSBAR #include #endif #include extern wxList wxModelessWindows; +extern wxMenu *wxCurrentPopupMenu; #define IDM_WINDOWTILE 4001 #define IDM_WINDOWCASCADE 4002 @@ -119,10 +120,6 @@ bool wxMDIParentFrame::Create(wxWindow *parent, m_windowMenu = (WXHMENU) ::LoadMenu(wxGetInstance(), "wxWindowMenu"); -#if WXDEBUG > 1 - wxDebugMsg("Loaded m_windowMenu %d\n", m_windowMenu); -#endif - DWORD msflags = WS_OVERLAPPED ; if (style & wxMINIMIZE_BOX) msflags |= WS_MINIMIZEBOX; @@ -265,7 +262,7 @@ void wxMDIParentFrame::SetMenuBar(wxMenuBar *menu_bar) void wxMDIParentFrame::OnSize(wxSizeEvent& event) { -#if USE_CONSTRAINTS +#if wxUSE_CONSTRAINTS if (GetAutoLayout()) Layout(); #endif @@ -279,7 +276,7 @@ void wxMDIParentFrame::OnSize(wxSizeEvent& event) /* Already done in MSWOnSize // forward WM_SIZE to status bar control -#if USE_NATIVE_STATUSBAR +#if wxUSE_NATIVE_STATUSBAR if (m_frameStatusBar && m_frameStatusBar->IsKindOf(CLASSINFO(wxStatusBar95))) ((wxStatusBar95 *)m_frameStatusBar)->OnSize(event); #endif @@ -302,7 +299,7 @@ void wxMDIParentFrame::OldOnSize(int x, int y) GetEventHandler()->ProcessEvent(event); #else -#if USE_CONSTRAINTS +#if wxUSE_CONSTRAINTS if (GetAutoLayout()) Layout(); #endif @@ -442,7 +439,7 @@ void wxMDIParentFrame::MSWOnSize(int x, int y, WXUINT id) if (!m_iconized) { // forward WM_SIZE to status bar control -#if USE_NATIVE_STATUSBAR +#if wxUSE_NATIVE_STATUSBAR if (m_frameStatusBar && m_frameStatusBar->IsKindOf(CLASSINFO(wxStatusBar95))) { wxSizeEvent event(wxSize(x, y), m_frameStatusBar->GetId()); @@ -486,6 +483,16 @@ bool wxMDIParentFrame::MSWOnCommand(WXWORD id, WXWORD cmd, WXHWND control) if (win) return win->MSWCommand(cmd, id); +/* + if (wxCurrentPopupMenu) + { + wxMenu *popupMenu = wxCurrentPopupMenu; + wxCurrentPopupMenu = NULL; + if (!popupMenu->MSWCommand(cmd, id)) + return TRUE; + } +*/ + switch (id) { case IDM_WINDOWCASCADE: @@ -505,9 +512,6 @@ bool wxMDIParentFrame::MSWOnCommand(WXWORD id, WXWORD cmd, WXHWND control) } if (id >= 0xF000) { -#if WXDEBUG > 1 - wxDebugMsg("wxMDIFrame::OnCommand %d: system command: calling default window proc\n", GetHWND()); -#endif return FALSE; // Get WndProc to call default proc } @@ -518,15 +522,12 @@ bool wxMDIParentFrame::MSWOnCommand(WXWORD id, WXWORD cmd, WXHWND control) } else if (m_currentChild && (id < wxFIRST_MDI_CHILD || id > wxLAST_MDI_CHILD)) { -#if WXDEBUG > 1 - wxDebugMsg("wxMDIFrame::MSWOnCommand %d: calling child OnCommand\n", GetHWND()); -#endif return m_currentChild->MSWOnCommand(id, cmd, control); } } if (id >= wxFIRST_MDI_CHILD && id <= wxLAST_MDI_CHILD) { - wxNode* node = GetChildren()->First(); + wxNode* node = GetChildren().First(); while (node) { wxWindow* child = (wxWindow*) node->Data(); @@ -594,8 +595,6 @@ long wxMDIParentFrame::MSWDefWindowProc(WXUINT message, WXWPARAM wParam, WXLPARA bool wxMDIParentFrame::MSWProcessMessage(WXMSG* msg) { - MSG *pMsg = (MSG *)msg; - if ((m_currentChild != (wxWindow *)NULL) && (m_currentChild->GetHWND() != (WXHWND) NULL) && m_currentChild->MSWProcessMessage(msg)) return TRUE; @@ -885,9 +884,6 @@ void wxMDIChildFrame::MSWOnSize(int x, int y, WXUINT id) if (invalidHandle == (HWND) GetHWND()) { -#if WXDEBUG > 1 - wxDebugMsg("wxMDIChildFrame::OnSize %d: invalid, so returning.\n", GetHWND()); -#endif return; } @@ -907,7 +903,7 @@ void wxMDIChildFrame::MSWOnSize(int x, int y, WXUINT id) if (!m_iconized) { // forward WM_SIZE to status bar control -#if USE_NATIVE_STATUSBAR +#if wxUSE_NATIVE_STATUSBAR if (m_frameStatusBar && m_frameStatusBar->IsKindOf(CLASSINFO(wxStatusBar95))) { wxSizeEvent event(wxSize(x, y), m_frameStatusBar->GetId()); @@ -926,9 +922,6 @@ void wxMDIChildFrame::MSWOnSize(int x, int y, WXUINT id) bool wxMDIChildFrame::MSWOnCommand(WXWORD id, WXWORD cmd, WXHWND control) { -#if WXDEBUG > 1 - wxDebugMsg("wxMDIChildFrame::MSWOnCommand %d\n", GetHWND()); -#endif // if ((cmd == 0) && GetHWND()) if (GetHWND()) { @@ -937,6 +930,14 @@ bool wxMDIChildFrame::MSWOnCommand(WXWORD id, WXWORD cmd, WXHWND control) if (win) return win->MSWCommand(cmd, id); + if (wxCurrentPopupMenu) + { + wxMenu *popupMenu = wxCurrentPopupMenu; + wxCurrentPopupMenu = NULL; + if (popupMenu->MSWCommand(cmd, id)) + return TRUE; + } + if (GetMenuBar() && GetMenuBar()->FindItemForId(id)) { ProcessCommand(id); @@ -979,13 +980,7 @@ long wxMDIChildFrame::MSWOnMDIActivate(long activate, WXHWND WXUNUSED(one), WXHW { wxMDIParentFrame *parent = (wxMDIParentFrame *)GetParent(); HMENU parent_menu = (HMENU) parent->GetWinMenu(); -#if WXDEBUG > 1 - wxDebugMsg("Parent menu is %d\n", parent_menu); -#endif HMENU child_menu = (HMENU) GetWinMenu(); -#if WXDEBUG > 1 - wxDebugMsg("Child menu is %d\n", child_menu); -#endif if (activate) { @@ -995,10 +990,6 @@ long wxMDIChildFrame::MSWOnMDIActivate(long activate, WXHWND WXUNUSED(one), WXHW { parent->m_parentFrameActive = FALSE; HMENU subMenu = GetSubMenu((HMENU) parent->GetWindowMenu(), 0); -#if WXDEBUG > 1 - wxDebugMsg("Window submenu is %d\n", subMenu); -#endif -// HMENU subMenu = 0; #ifdef __WIN32__ ::SendMessage((HWND) parent->GetClientWindow()->GetHWND(), WM_MDISETMENU, (WPARAM)child_menu, @@ -1028,10 +1019,6 @@ long wxMDIChildFrame::MSWOnMDIActivate(long activate, WXHWND WXUNUSED(one), WXHW { parent->m_parentFrameActive = TRUE; HMENU subMenu = GetSubMenu((HMENU) parent->GetWindowMenu(), 0); -#if WXDEBUG > 1 - wxDebugMsg("Window submenu is %d\n", subMenu); -#endif -// HMENU subMenu = 0; #ifdef __WIN32__ ::SendMessage((HWND) parent->GetClientWindow()->GetHWND(), WM_MDISETMENU, (WPARAM)parent_menu, @@ -1048,10 +1035,6 @@ long wxMDIChildFrame::MSWOnMDIActivate(long activate, WXHWND WXUNUSED(one), WXHW wxActivateEvent event(wxEVT_ACTIVATE, flag, m_windowId); event.SetEventObject( this ); GetEventHandler()->ProcessEvent(event); - -#if WXDEBUG > 1 - wxDebugMsg("Finished (de)activating\n"); -#endif return 0; } @@ -1068,16 +1051,10 @@ void wxMDIChildFrame::MSWDestroyWindow(void) // destroyed. HWND oldHandle = (HWND)GetHWND(); -#if WXDEBUG > 1 - wxDebugMsg("*** About to DestroyWindow MDI child %d\n", oldHandle); -#endif #ifdef __WIN32__ SendMessage((HWND) parent->GetClientWindow()->GetHWND(), WM_MDIDESTROY, (WPARAM)oldHandle, (LPARAM)0); #else SendMessage((HWND) parent->GetClientWindow()->GetHWND(), WM_MDIDESTROY, (HWND)oldHandle, 0); -#endif -#if WXDEBUG > 1 - wxDebugMsg("*** Finished DestroyWindow MDI child %d\n", oldHandle); #endif invalidHandle = 0; @@ -1206,7 +1183,7 @@ long wxMDIClientWindow::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lPa long wxMDIClientWindow::MSWDefWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam) { if ( MSWGetOldWndProc() != 0) - return ::CallWindowProc(CASTWNDPROC (FARPROC) MSWGetOldWndProc(), (HWND) GetHWND(), (UINT) nMsg, (WPARAM) wParam, (LPARAM) lParam); + return ::CallWindowProc(CASTWNDPROC MSWGetOldWndProc(), (HWND) GetHWND(), (UINT) nMsg, (WPARAM) wParam, (LPARAM) lParam); else return ::DefWindowProc((HWND) m_hWnd, (UINT) nMsg, (WPARAM) wParam, (LPARAM) lParam); }