X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2596e9fb2c6f7c999cdf1ffaa62b043e1bb4ce1e..1146983c7be03c3b0d617b983625b11f693cefdb:/src/msw/mdi.cpp diff --git a/src/msw/mdi.cpp b/src/msw/mdi.cpp index 3d2ac43e30..d3ed9137f9 100644 --- a/src/msw/mdi.cpp +++ b/src/msw/mdi.cpp @@ -384,10 +384,14 @@ void wxMDIParentFrame::Cascade() ::SendMessage(GetWinHwnd(GetClientWindow()), WM_MDICASCADE, 0, 0); } -// TODO: add a direction argument (hor/vert) -void wxMDIParentFrame::Tile() +void wxMDIParentFrame::Tile(wxOrientation orient) { - ::SendMessage(GetWinHwnd(GetClientWindow()), WM_MDITILE, MDITILE_HORIZONTAL, 0); + wxASSERT_MSG( orient == wxHORIZONTAL || orient == wxVERTICAL, + _T("invalid orientation value") ); + + ::SendMessage(GetWinHwnd(GetClientWindow()), WM_MDITILE, + orient == wxHORIZONTAL ? MDITILE_HORIZONTAL + : MDITILE_VERTICAL, 0); } void wxMDIParentFrame::ArrangeIcons() @@ -486,9 +490,8 @@ WXLRESULT wxMDIParentFrame::MSWWindowProc(WXUINT message, break; case WM_SIZE: - // as we don't (usually) resize the MDI client to exactly fit the - // client area (we put it below the toolbar, above statusbar &c), - // we should not pass this one to DefFrameProc + // though we don't (usually) resize the MDI client to exactly fit the + // client area we need to pass this one to DefFrameProc to allow the children to show break; } @@ -817,7 +820,8 @@ void wxMDIChildFrame::DoSetClientSize(int width, int height) MoveWindow(hWnd, point.x, point.y, actual_width, actual_height, (BOOL)true); - wxSizeEvent event(wxSize(width, height), m_windowId); + wxSize size(width, height); + wxSizeEvent event(size, m_windowId); event.SetEventObject( this ); GetEventHandler()->ProcessEvent(event); } @@ -835,8 +839,10 @@ void wxMDIChildFrame::DoGetPosition(int *x, int *y) const wxMDIParentFrame *mdiParent = (wxMDIParentFrame *)GetParent(); ::ScreenToClient((HWND) mdiParent->GetClientWindow()->GetHWND(), &point); - *x = point.x; - *y = point.y; + if (x) + *x = point.x; + if (y) + *y = point.y; } void wxMDIChildFrame::InternalSetMenuBar() @@ -1318,7 +1324,7 @@ void wxMDIChildFrame::OnIdle(wxIdleEvent& event) { Show(true); } - + // MDI child frames get their WM_SIZE when they're constructed but at this // moment they don't have any children yet so all child windows will be // positioned incorrectly when they are added later - to fix this, we