X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d697657f1ec08e787f06bbb36be3d1bb4858101d..08202189cbf2f78d932f85b9733b69e24f08e58c:/src/os2/frame.cpp diff --git a/src/os2/frame.cpp b/src/os2/frame.cpp index 646295e411..f7ab688deb 100644 --- a/src/os2/frame.cpp +++ b/src/os2/frame.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: frame.cpp +// Name: src/os2/frame.cpp // Purpose: wxFrame // Author: David Webster // Modified by: @@ -13,7 +13,6 @@ #include "wx/wxprec.h" #ifndef WX_PRECOMP - #include "wx/defs.h" #include "wx/object.h" #include "wx/dynarray.h" #include "wx/list.h" @@ -22,7 +21,6 @@ #include "wx/intl.h" #include "wx/log.h" #include "wx/event.h" - #include "wx/setup.h" #include "wx/frame.h" #include "wx/menu.h" #include "wx/app.h" @@ -31,37 +29,21 @@ #include "wx/settings.h" #include "wx/dcclient.h" #include "wx/mdi.h" + #include "wx/toolbar.h" + #include "wx/statusbr.h" + #include "wx/menuitem.h" #endif // WX_PRECOMP #include "wx/os2/private.h" -#if wxUSE_STATUSBAR - #include "wx/statusbr.h" - #include "wx/generic/statusbr.h" -#endif // wxUSE_STATUSBAR - -#if wxUSE_TOOLBAR - #include "wx/toolbar.h" -#endif // wxUSE_TOOLBAR - -#include "wx/menuitem.h" -#include "wx/log.h" - // ---------------------------------------------------------------------------- // globals // ---------------------------------------------------------------------------- -extern wxWindowList wxModelessWindows; -extern wxList WXDLLEXPORT wxPendingDelete; - #if wxUSE_MENUS_NATIVE extern wxMenu *wxCurrentPopupMenu; #endif -extern void wxAssociateWinWithHandle( HWND hWnd - ,wxWindowOS2* pWin - ); - // ---------------------------------------------------------------------------- // event tables // ---------------------------------------------------------------------------- @@ -82,9 +64,9 @@ IMPLEMENT_DYNAMIC_CLASS(wxFrame, wxWindow) #if wxUSE_STATUSBAR #if wxUSE_NATIVE_STATUSBAR - bool wxFrame::m_bUseNativeStatusBar = TRUE; + bool wxFrame::m_bUseNativeStatusBar = true; #else - bool wxFrame::m_bUseNativeStatusBar = FALSE; + bool wxFrame::m_bUseNativeStatusBar = false; #endif #endif //wxUSE_STATUSBAR @@ -99,7 +81,7 @@ void wxFrame::Init() m_nFsStatusBarHeight = 0; m_nFsToolBarHeight = 0; m_hWndToolTip = 0L; - m_bWasMinimized = FALSE; + m_bWasMinimized = false; m_frameMenuBar = NULL; @@ -119,19 +101,17 @@ void wxFrame::Init() memset(&m_vSwpVScroll, 0, sizeof(SWP)); memset(&m_vSwpStatusBar, 0, sizeof(SWP)); memset(&m_vSwpToolBar, 0, sizeof(SWP)); - m_bIconized = FALSE; + m_bIconized = false; } // end of wxFrame::Init -bool wxFrame::Create( - wxWindow* pParent -, wxWindowID vId -, const wxString& rsTitle -, const wxPoint& rPos -, const wxSize& rSize -, long lStyle -, const wxString& rsName -) +bool wxFrame::Create( wxWindow* pParent, + wxWindowID vId, + const wxString& rsTitle, + const wxPoint& rPos, + const wxSize& rSize, + long lStyle, + const wxString& rsName ) { if (!wxTopLevelWindow::Create( pParent ,vId @@ -141,14 +121,13 @@ bool wxFrame::Create( ,lStyle ,rsName )) - return FALSE; - wxModelessWindows.Append(this); - return TRUE; + return false; + return true; } // end of wxFrame::Create wxFrame::~wxFrame() { - m_isBeingDeleted = TRUE; + m_isBeingDeleted = true; DeleteAllBars(); } // end of wxFrame::~wxFrame @@ -173,15 +152,13 @@ void wxFrame::DoGetClientSize( // // Set the client size (i.e. leave the calculation of borders etc. -// to wxWindows) +// to wxWidgets) // void wxFrame::DoSetClientSize( int nWidth , int nHeight ) { - wxStatusBar* pStatusBar = GetStatusBar(); - // // Statusbars are not part of the OS/2 Client but parent frame // so no statusbar consideration @@ -217,8 +194,6 @@ wxStatusBar* wxFrame::OnCreateStatusBar( ) { wxStatusBar* pStatusBar = NULL; - SWP vSwp; - ERRORID vError; wxString sError; pStatusBar = wxFrameBase::OnCreateStatusBar( nNumber @@ -237,26 +212,21 @@ wxStatusBar* wxFrame::OnCreateStatusBar( // Set the height according to the font and the border size // vDC.SetFont(pStatusBar->GetFont()); // Screws up the menues for some reason - vDC.GetTextExtent( "X" + vDC.GetTextExtent( wxT("X") ,NULL ,&nY ); int nHeight = ((11 * nY) / 10 + 2 * pStatusBar->GetBorderY()); - pStatusBar->SetSize( -1 - ,-1 - ,-1 + pStatusBar->SetSize( wxDefaultCoord + ,wxDefaultCoord + ,wxDefaultCoord ,nHeight ); - ::WinSetParent( pStatusBar->GetHWND() - ,m_hFrame - ,FALSE - ); - ::WinSetOwner( pStatusBar->GetHWND() - ,m_hFrame - ); + ::WinSetParent( pStatusBar->GetHWND(), m_hFrame, FALSE ); + ::WinSetOwner( pStatusBar->GetHWND(), m_hFrame); // // to show statusbar // @@ -281,7 +251,6 @@ void wxFrame::PositionStatusBar() int nY; int nStatbarWidth; int nStatbarHeight; - HWND hWndClient; RECTL vRect; RECTL vFRect; @@ -311,7 +280,7 @@ void wxFrame::PositionStatusBar() { vError = ::WinGetLastError(vHabmain); sError = wxPMErrorToStr(vError); - wxLogError("Error setting parent for StautsBar. Error: %s\n", sError); + wxLogError(_T("Error setting parent for StatusBar. Error: %s\n"), sError.c_str()); return; } } @@ -319,24 +288,15 @@ void wxFrame::PositionStatusBar() #endif // wxUSE_STATUSBAR #if wxUSE_TOOLBAR -wxToolBar* wxFrame::OnCreateToolBar( - long lStyle -, wxWindowID vId -, const wxString& rsName -) +wxToolBar* wxFrame::OnCreateToolBar( long lStyle, wxWindowID vId, const wxString& rsName ) { wxToolBar* pToolBar = wxFrameBase::OnCreateToolBar( lStyle ,vId ,rsName ); - ::WinSetParent( pToolBar->GetHWND() - ,m_hFrame - ,FALSE - ); - ::WinSetOwner( pToolBar->GetHWND() - ,m_hFrame - ); + ::WinSetParent( pToolBar->GetHWND(), m_hFrame, FALSE); + ::WinSetOwner( pToolBar->GetHWND(), m_hFrame); return pToolBar; } // end of WinGuiBase_CFrame::OnCreateToolBar #endif @@ -355,17 +315,7 @@ void wxFrame::SetMenuBar( wxMenuBar* pMenuBar ) { - ERRORID vError; wxString sError; - HWND hTitlebar = NULLHANDLE; - HWND hHScroll = NULLHANDLE; - HWND hVScroll = NULLHANDLE; - HWND hMenuBar = NULLHANDLE; - SWP vSwp; - SWP vSwpTitlebar; - SWP vSwpVScroll; - SWP vSwpHScroll; - SWP vSwpMenu; if (!pMenuBar) { @@ -384,7 +334,7 @@ void wxFrame::SetMenuBar( // // Can set a menubar several times. // TODO: how to prevent a memory leak if you have a currently-unattached - // menubar? wxWindows assumes that the frame will delete the menu (otherwise + // menubar? wxWidgets assumes that the frame will delete the menu (otherwise // there are problems for MDI). // if (pMenuBar->GetHMenu()) @@ -454,14 +404,14 @@ void wxFrame::InternalSetMenuBar() { vError = ::WinGetLastError(vHabmain); sError = wxPMErrorToStr(vError); - wxLogError("Error setting parent for submenu. Error: %s\n", sError); + wxLogError(_T("Error setting parent for submenu. Error: %s\n"), sError.c_str()); } if (!::WinSetOwner(m_hMenu, m_hFrame)) { vError = ::WinGetLastError(vHabmain); sError = wxPMErrorToStr(vError); - wxLogError("Error setting parent for submenu. Error: %s\n", sError); + wxLogError(_T("Error setting parent for submenu. Error: %s\n"), sError.c_str()); } ::WinSendMsg(m_hFrame, WM_UPDATEFRAME, (MPARAM)FCF_MENU, (MPARAM)0); } // end of wxFrame::InternalSetMenuBar @@ -493,18 +443,15 @@ void wxFrame::OnSysColourChanged( wxWindow::OnSysColourChanged(rEvent); } // end of wxFrame::OnSysColourChanged -// Pass TRUE to show full screen, FALSE to restore. -bool wxFrame::ShowFullScreen( - bool bShow -, long lStyle -) +// Pass true to show full screen, false to restore. +bool wxFrame::ShowFullScreen( bool bShow, long lStyle ) { if (bShow) { if (IsFullScreen()) - return FALSE; + return false; - m_bFsIsShowing = TRUE; + m_bFsIsShowing = true; m_lFsStyle = lStyle; #if wxUSE_TOOLBAR @@ -533,8 +480,8 @@ bool wxFrame::ShowFullScreen( // if ((lStyle & wxFULLSCREEN_NOTOOLBAR) && pTheToolBar) { - pTheToolBar->SetSize(-1,0); - pTheToolBar->Show(FALSE); + pTheToolBar->SetSize(wxDefaultCoord,0); + pTheToolBar->Show(false); } #endif //wxUSE_TOOLBAR @@ -577,8 +524,8 @@ bool wxFrame::ShowFullScreen( // // Decide which window style flags to turn off // - LONG lNewStyle = m_lFsOldWindowStyle; - LONG lOffFlags = 0; + LONG lNewStyle = m_lFsOldWindowStyle; + LONG lOffFlags = 0; if (lStyle & wxFULLSCREEN_NOBORDER) lOffFlags |= FCF_BORDER; @@ -602,13 +549,11 @@ bool wxFrame::ShowFullScreen( ::WinQueryWindowRect(HWND_DESKTOP, &vRect); nWidth = vRect.xRight - vRect.xLeft; // - // Rmember OS/2 is backwards! + // Remember OS/2 is backwards! // nHeight = vRect.yTop - vRect.yBottom; - SetSize( nWidth - ,nHeight - ); + SetSize( nWidth, nHeight); // // Now flush the window style cache and actually go full-screen @@ -622,21 +567,18 @@ bool wxFrame::ShowFullScreen( ,SWP_SIZE | SWP_SHOW ); - wxSizeEvent vEvent( wxSize( nWidth - ,nHeight - ) - ,GetId() - ); + wxSize sz( nWidth, nHeight ); + wxSizeEvent vEvent( sz, GetId() ); GetEventHandler()->ProcessEvent(vEvent); - return TRUE; + return true; } else { if (!IsFullScreen()) - return FALSE; + return false; - m_bFsIsShowing = FALSE; + m_bFsIsShowing = false; #if wxUSE_TOOLBAR wxToolBar* pTheToolBar = GetToolBar(); @@ -646,8 +588,8 @@ bool wxFrame::ShowFullScreen( // if (pTheToolBar && (m_lFsStyle & wxFULLSCREEN_NOTOOLBAR)) { - pTheToolBar->SetSize(-1, m_nFsToolBarHeight); - pTheToolBar->Show(TRUE); + pTheToolBar->SetSize(wxDefaultCoord, m_nFsToolBarHeight); + pTheToolBar->Show(true); } #endif //wxUSE_TOOLBAR @@ -695,29 +637,13 @@ bool wxFrame::ShowFullScreen( // Checks if there is a toolbar, and returns the first free client position wxPoint wxFrame::GetClientAreaOrigin() const { - wxPoint vPoint(0, 0); + wxPoint vPoint = wxTopLevelWindow::GetClientAreaOrigin(); -#if wxUSE_TOOLBAR - if (GetToolBar()) - { - int nWidth; - int nHeight; - - GetToolBar()->GetSize( &nWidth - ,&nHeight - ); - - if (GetToolBar()->GetWindowStyleFlag() & wxTB_VERTICAL) - { - vPoint.x += nWidth; - } - else - { - // PM is backwards from windows - vPoint.y += nHeight; - } - } -#endif //wxUSE_TOOLBAR + // + // In OS/2 the toolbar and statusbar are frame extensions so there is no + // adjustment. The client is supposedly resized for a toolbar in OS/2 + // as it is for the status bar. + // return vPoint; } // end of wxFrame::GetClientAreaOrigin @@ -754,10 +680,8 @@ void wxFrame::PositionToolBar() if (!pToolBar) return; - HWND hWndClient; RECTL vRect; RECTL vFRect; - SWP vSwp; wxPoint vPos; ::WinQueryWindowRect(m_hFrame, &vRect); @@ -771,7 +695,7 @@ void wxFrame::PositionToolBar() ,&vTHeight ); - if (pToolBar->GetWindowStyleFlag() & wxTB_HORIZONTAL) + if (pToolBar->GetWindowStyleFlag() & wxTB_TOP) { vWidth = (wxCoord)(vRect.xRight - vRect.xLeft); pToolBar->SetSize( vRect.xLeft - vFRect.xLeft @@ -780,6 +704,38 @@ void wxFrame::PositionToolBar() ,vTHeight ); } + else if (pToolBar->GetWindowStyleFlag() & wxTB_BOTTOM) + { + wxCoord vSwidth = 0; + wxCoord vSheight = 0; + + if (m_frameStatusBar) + m_frameStatusBar->GetSize( &vSwidth + ,&vSheight + ); + vWidth = (wxCoord)(vRect.xRight - vRect.xLeft); + pToolBar->SetSize( vRect.xLeft - vFRect.xLeft + ,vFRect.yTop - vRect.yBottom - vTHeight - vSheight + ,vWidth + ,vTHeight + ); + } + else if (pToolBar->GetWindowStyleFlag() & wxTB_LEFT) + { + wxCoord vSwidth = 0; + wxCoord vSheight = 0; + + if (m_frameStatusBar) + m_frameStatusBar->GetSize( &vSwidth + ,&vSheight + ); + vHeight = (wxCoord)(vRect.yTop - vRect.yBottom); + pToolBar->SetSize( vRect.xLeft - vRect.xLeft + ,vPos.y + ,vTWidth + ,vHeight - vSheight + ); + } else { wxCoord vSwidth = 0; @@ -790,7 +746,7 @@ void wxFrame::PositionToolBar() ,&vSheight ); vHeight = (wxCoord)(vRect.yTop - vRect.yBottom); - pToolBar->SetSize( vRect.xLeft - vFRect.xLeft + pToolBar->SetSize( vRect.xRight - vFRect.xLeft - vTWidth ,vPos.y ,vTWidth ,vHeight - vSheight @@ -810,10 +766,12 @@ void wxFrame::PositionToolBar() // Windows behaviour where child frames float independently of the parent one // on the desktop, but are iconized/restored with it // -void wxFrame::IconizeChildFrames( - bool bIconize -) +void wxFrame::IconizeChildFrames( bool WXUNUSED(bIconize) ) { + // FIXME: Generic MDI does not use Frames for the Childs, so this does _not_ + // work. Possibly, the right thing is simply to eliminate this + // functions and all the calls to it from within this file. +#if 0 for (wxWindowList::Node* pNode = GetChildren().GetFirst(); pNode; pNode = pNode->GetNext() ) @@ -845,6 +803,7 @@ void wxFrame::IconizeChildFrames( pFrame->Iconize(bIconize); } } +#endif } // end of wxFrame::IconizeChildFrames WXHICON wxFrame::GetDefaultIcon() const @@ -859,23 +818,21 @@ WXHICON wxFrame::GetDefaultIcon() const // --------------------------------------------------------------------------- // preprocessing // --------------------------------------------------------------------------- -bool wxFrame::OS2TranslateMessage( - WXMSG* pMsg -) +bool wxFrame::OS2TranslateMessage( WXMSG* pMsg ) { // // try the menu bar accels // - wxMenuBar* pMenuBar = GetMenuBar(); + wxMenuBar* pMenuBar = GetMenuBar(); if (!pMenuBar) - return FALSE; + return false; #if wxUSE_ACCEL && wxUSE_MENUS_NATIVE const wxAcceleratorTable& rAcceleratorTable = pMenuBar->GetAccelTable(); return rAcceleratorTable.Translate(GetHWND(), pMsg); #else - return FALSE; + return false; #endif //wxUSE_ACCEL } // end of wxFrame::OS2TranslateMessage @@ -884,7 +841,7 @@ bool wxFrame::OS2TranslateMessage( // --------------------------------------------------------------------------- bool wxFrame::HandlePaint() { - RECTL vRect; + RECTL vRect; if (::WinQueryUpdateRect(GetHWND(), &vRect)) { @@ -915,7 +872,6 @@ bool wxFrame::HandlePaint() if (hIcon) { - HWND hWndClient; RECTL vRect3; ::WinQueryWindowRect(GetHwnd(), &vRect3); @@ -928,7 +884,6 @@ bool wxFrame::HandlePaint() ::WinDrawPointer(hPs, nIconX, nIconY, hIcon, DP_NORMAL); } ::WinEndPaint(hPs); - return TRUE; } else { @@ -962,27 +917,18 @@ bool wxFrame::HandlePaint() ,&vRect ,GetBackgroundColour().GetPixel() ); - ::WinEndPaint(hPS); + ::WinEndPaint(hPS); } } - return TRUE; } } - else - { - // nothing to paint - processed - return TRUE; - } - return FALSE; + + return true; } // end of wxFrame::HandlePaint -bool wxFrame::HandleSize( - int nX -, int nY -, WXUINT nId -) +bool wxFrame::HandleSize( int nX, int nY, WXUINT nId ) { - bool bProcessed = FALSE; + bool bProcessed = false; switch (nId) { @@ -997,24 +943,24 @@ bool wxFrame::HandleSize( // // restore all child frames too // - IconizeChildFrames(FALSE); - (void)SendIconizeEvent(FALSE); + IconizeChildFrames(false); + (void)SendIconizeEvent(false); // // fall through // case kSizeMax: - m_bIconized = FALSE; + m_bIconized = false; break; case kSizeMin: // // Iconize all child frames too // - IconizeChildFrames(TRUE); + IconizeChildFrames(true); (void)SendIconizeEvent(); - m_bIconized = TRUE; + m_bIconized = true; break; } @@ -1050,11 +996,9 @@ bool wxFrame::HandleSize( return bProcessed; } // end of wxFrame::HandleSize -bool wxFrame::HandleCommand( - WXWORD nId -, WXWORD nCmd -, WXHWND hControl -) +bool wxFrame::HandleCommand( WXWORD nId, + WXWORD nCmd, + WXHWND hControl ) { if (hControl) { @@ -1064,9 +1008,7 @@ bool wxFrame::HandleCommand( wxWindow* pWin = wxFindWinFromHandle(hControl); if (pWin) - return pWin->OS2Command( nCmd - ,nId - ); + return pWin->OS2Command( nCmd, nId ); } // @@ -1081,26 +1023,21 @@ bool wxFrame::HandleCommand( wxCurrentPopupMenu = NULL; - return pPopupMenu->OS2Command( nCmd - ,nId - ); - return TRUE; + return pPopupMenu->OS2Command( nCmd, nId ); } #endif if (ProcessCommand(nId)) { - return TRUE; + return true; } } - return FALSE; + return false; } // end of wxFrame::HandleCommand -bool wxFrame::HandleMenuSelect( - WXWORD nItem -, WXWORD nFlags -, WXHMENU hMenu -) +bool wxFrame::HandleMenuSelect( WXWORD nItem, + WXWORD nFlags, + WXHMENU hMenu ) { if( !nFlags ) { @@ -1118,26 +1055,24 @@ bool wxFrame::HandleMenuSelect( } else { - DoGiveHelp(wxEmptyString, FALSE); - return FALSE; + DoGiveHelp(wxEmptyString, false); + return false; } } - return TRUE; + return true; } // end of wxFrame::HandleMenuSelect // --------------------------------------------------------------------------- // Main Frame window proc // --------------------------------------------------------------------------- -MRESULT EXPENTRY wxFrameMainWndProc( - HWND hWnd -, ULONG ulMsg -, MPARAM wParam -, MPARAM lParam -) +MRESULT EXPENTRY wxFrameMainWndProc( HWND hWnd, + ULONG ulMsg, + MPARAM wParam, + MPARAM lParam ) { - MRESULT rc = (MRESULT)0; - bool bProcessed = FALSE; - wxFrame* pWnd = NULL; + MRESULT rc = (MRESULT)0; + bool bProcessed = false; + wxFrame* pWnd = NULL; pWnd = (wxFrame*) wxFindWinFromHandle((WXHWND) hWnd); switch (ulMsg) @@ -1189,13 +1124,27 @@ MRESULT EXPENTRY wxFrameMainWndProc( { if(pWnd->m_hWnd && pSWP[i].hwnd == pWnd->m_hWnd) { - if (pWnd->m_frameToolBar && pWnd->m_frameToolBar->GetWindowStyleFlag() & wxTB_HORIZONTAL) + if (pWnd->m_frameToolBar && pWnd->m_frameToolBar->GetWindowStyleFlag() & wxTB_TOP) { pSWP[i].x = vRectl.xLeft; pSWP[i].y = vRectl.yBottom + nHeight; pSWP[i].cx = vRectl.xRight - vRectl.xLeft; pSWP[i].cy = vRectl.yTop - vRectl.yBottom - (nHeight + nHeight2); } + else if (pWnd->m_frameToolBar && pWnd->m_frameToolBar->GetWindowStyleFlag() & wxTB_BOTTOM) + { + pSWP[i].x = vRectl.xLeft; + pSWP[i].y = vRectl.yBottom + nHeight + nHeight2; + pSWP[i].cx = vRectl.xRight - vRectl.xLeft; + pSWP[i].cy = vRectl.yTop - vRectl.yBottom - (nHeight + nHeight2); + } + else if (pWnd->m_frameToolBar && pWnd->m_frameToolBar->GetWindowStyleFlag() & wxTB_LEFT) + { + pSWP[i].x = vRectl.xLeft + nWidth; + pSWP[i].y = vRectl.yBottom + nHeight; + pSWP[i].cx = vRectl.xRight - (vRectl.xLeft + nWidth); + pSWP[i].cy = vRectl.yTop - vRectl.yBottom - nHeight; + } else { pSWP[i].x = vRectl.xLeft; @@ -1207,7 +1156,7 @@ MRESULT EXPENTRY wxFrameMainWndProc( pSWP[i].hwndInsertBehind = HWND_TOP; } } - bProcessed = TRUE; + bProcessed = true; rc = MRFROMSHORT(nItemCount); } break; @@ -1243,7 +1192,6 @@ MRESULT EXPENTRY wxFrameWndProc( // MRESULT rc = (MRESULT)0; - bool bProcessed = FALSE; // // Stop right here if we don't have a valid handle in our wxWindow object. @@ -1264,14 +1212,12 @@ MRESULT EXPENTRY wxFrameWndProc( return rc; } // end of wxFrameWndProc -MRESULT wxFrame::OS2WindowProc( - WXUINT uMessage -, WXWPARAM wParam -, WXLPARAM lParam -) +MRESULT wxFrame::OS2WindowProc( WXUINT uMessage, + WXWPARAM wParam, + WXLPARAM lParam ) { - MRESULT mRc = 0L; - bool bProcessed = FALSE; + MRESULT mRc = 0L; + bool bProcessed = false; switch (uMessage) { @@ -1341,8 +1287,6 @@ MRESULT wxFrame::OS2WindowProc( case WM_SIZE: { - SHORT nScxold = SHORT1FROMMP(wParam); // Old horizontal size. - SHORT nScyold = SHORT2FROMMP(wParam); // Old vertical size. SHORT nScxnew = SHORT1FROMMP(lParam); // New horizontal size. SHORT nScynew = SHORT2FROMMP(lParam); // New vertical size. @@ -1377,17 +1321,15 @@ MRESULT wxFrame::OS2WindowProc( return (MRESULT)mRc; } // wxFrame::OS2WindowProc -void wxFrame::SetClient(WXHWND c_Hwnd) +void wxFrame::SetClient(WXHWND WXUNUSED(c_Hwnd)) { // Duh...nothing to do under OS/2 } -void wxFrame::SetClient( - wxWindow* pWindow -) +void wxFrame::SetClient( wxWindow* pWindow ) { - wxWindow* pOldClient = this->GetClient(); - bool bClientHasFocus = pOldClient && (pOldClient == wxWindow::FindFocus()); + wxWindow* pOldClient = this->GetClient(); + bool bClientHasFocus = pOldClient && (pOldClient == wxWindow::FindFocus()); if(pOldClient == pWindow) // nothing to do return; @@ -1399,8 +1341,8 @@ void wxFrame::SetClient( if(bClientHasFocus ) this->SetFocus(); - pOldClient->Enable( FALSE ); - pOldClient->Show( FALSE ); + pOldClient->Enable( false ); + pOldClient->Show( false ); ::WinSetWindowUShort(pOldClient->GetHWND(), QWS_ID, (USHORT)pOldClient->GetId()); // to avoid OS/2 bug need to update frame ::WinSendMsg((HWND)this->GetFrame(), WM_UPDATEFRAME, (MPARAM)~0, 0); @@ -1416,8 +1358,8 @@ void wxFrame::SetClient( ::WinEnableWindowUpdate((HWND)GetHWND(), FALSE); if(pOldClient) { - pOldClient->Enable(FALSE); - pOldClient->Show(FALSE); + pOldClient->Enable(false); + pOldClient->Show(false); ::WinSetWindowUShort(pOldClient->GetHWND(), QWS_ID, (USHORT)pOldClient->GetId()); } pWindow->Reparent(this); @@ -1436,3 +1378,21 @@ wxWindow* wxFrame::GetClient() { return wxFindWinFromHandle((WXHWND)::WinWindowFromID(m_hFrame, FID_CLIENT)); } + +void wxFrame::SendSizeEvent() +{ + if (!m_bIconized) + { + RECTL vRect = wxGetWindowRect(GetHwnd()); + + ::WinPostMsg( GetHwnd() + ,WM_SIZE + ,MPFROM2SHORT( vRect.xRight - vRect.xLeft + ,vRect.xRight - vRect.xLeft + ) + ,MPFROM2SHORT( vRect.yTop - vRect.yBottom + ,vRect.yTop - vRect.yBottom + ) + ); + } +}