X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/893758d507abf66a429666b9f0b2c1baa195b398..4aaef122cbbd5bbe0e70b824e320458e2329dd13:/src/os2/frame.cpp?ds=inline diff --git a/src/os2/frame.cpp b/src/os2/frame.cpp index f21c945ae6..bc13037ef5 100644 --- a/src/os2/frame.cpp +++ b/src/os2/frame.cpp @@ -1,6 +1,6 @@ ///////////////////////////////////////////////////////////////////////////// // Name: frame.cpp -// Purpose: wxFrameOS2 +// Purpose: wxFrame // Author: David Webster // Modified by: // Created: 10/27/99 @@ -53,26 +53,25 @@ extern wxWindowList wxModelessWindows; extern wxList WXDLLEXPORT wxPendingDelete; extern wxChar wxFrameClassName[]; + +#if wxUSE_MENUS_NATIVE extern wxMenu *wxCurrentPopupMenu; +#endif -extern void wxAssociateWinWithHandle( HWND hWnd - ,wxWindow* pWin +extern void wxAssociateWinWithHandle( HWND hWnd + ,wxWindowOS2* pWin ); // ---------------------------------------------------------------------------- // event tables // ---------------------------------------------------------------------------- -BEGIN_EVENT_TABLE(wxFrameOS2, wxFrameBase) - EVT_ACTIVATE(wxFrameOS2::OnActivate) - EVT_SYS_COLOUR_CHANGED(wxFrameOS2::OnSysColourChanged) +BEGIN_EVENT_TABLE(wxFrame, wxFrameBase) + EVT_ACTIVATE(wxFrame::OnActivate) + EVT_SYS_COLOUR_CHANGED(wxFrame::OnSysColourChanged) END_EVENT_TABLE() -IMPLEMENT_DYNAMIC_CLASS(wxFrameOS2, wxWindow) - -#ifndef __WXUNIVERSAL__ -IMPLEMENT_DYNAMIC_CLASS(wxFrame, wxFrameMSW) -#endif +IMPLEMENT_DYNAMIC_CLASS(wxFrame, wxWindow) // ============================================================================ // implementation @@ -84,9 +83,9 @@ IMPLEMENT_DYNAMIC_CLASS(wxFrame, wxFrameMSW) #if wxUSE_STATUSBAR #if wxUSE_NATIVE_STATUSBAR - bool wxFrameOS2::m_bUseNativeStatusBar = TRUE; + bool wxFrame::m_bUseNativeStatusBar = TRUE; #else - bool wxFrameOS2::m_bUseNativeStatusBar = FALSE; + bool wxFrame::m_bUseNativeStatusBar = FALSE; #endif #endif //wxUSE_STATUSBAR @@ -95,7 +94,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxFrame, wxFrameMSW) // creation/destruction // ---------------------------------------------------------------------------- -void wxFrameOS2::Init() +void wxFrame::Init() { m_bIconized = FALSE; @@ -109,6 +108,7 @@ void wxFrameOS2::Init() m_nFsStatusBarHeight = 0; m_nFsToolBarHeight = 0; m_bFsIsMaximized = FALSE; + m_bWasMinimized = FALSE; m_bFsIsShowing = FALSE; m_bIsShown = FALSE; m_pWinLastFocused = (wxWindow *)NULL; @@ -129,9 +129,9 @@ void wxFrameOS2::Init() memset(&m_vSwpVScroll, 0, sizeof(SWP)); memset(&m_vSwpStatusBar, 0, sizeof(SWP)); memset(&m_vSwpToolBar, 0, sizeof(SWP)); -} // end of wxFrameOS2::Init +} // end of wxFrame::Init -bool wxFrameOS2::Create( +bool wxFrame::Create( wxWindow* pParent , wxWindowID vId , const wxString& rsTitle @@ -191,9 +191,9 @@ bool wxFrameOS2::Create( wxModelessWindows.Append(this); } return(bOk); -} // end of wxFrameOS2::Create +} // end of wxFrame::Create -wxFrameOS2::~wxFrameOS2() +wxFrame::~wxFrame() { m_isBeingDeleted = TRUE; @@ -235,12 +235,59 @@ wxFrameOS2::~wxFrameOS2() ); } } -} // end of wxFrameOS2::~wxFrame +} // end of wxFrame::~wxFrame + +// +// IF we have child controls in the Frame's client we need to alter +// the y position, because, OS/2 controls are positioned relative to +// wxWindows orgin (top left) not the OS/2 origin (bottom left) +void wxFrame::AlterChildPos() +{ + // + // OS/2 is the only OS concerned about this + // + wxWindow* pChild = NULL; + wxControl* pCtrl = NULL; + RECTL vRect; + SWP vSwp; + + ::WinQueryWindowRect(GetHwnd(), &vRect); + for (wxWindowList::Node* pNode = GetChildren().GetFirst(); + pNode; + pNode = pNode->GetNext()) + { + wxWindow* pChild = pNode->GetData(); + + ::WinQueryWindowPos(pChild->GetHWND(), &vSwp); + vSwp.y += (vRect.yTop - m_vSwpClient.cy); + if (pChild->IsKindOf(CLASSINFO(wxControl))) + { + pCtrl = wxDynamicCast(pChild, wxControl); + // + // Must deal with controls that have margins like ENTRYFIELD. The SWP + // struct of such a control will have and origin offset from its intended + // position by the width of the margins. + // + vSwp.y -= pCtrl->GetYComp(); + vSwp.x -= pCtrl->GetXComp(); + } + ::WinSetWindowPos( pChild->GetHWND() + ,HWND_TOP + ,vSwp.x + ,vSwp.y + ,vSwp.cx + ,vSwp.cy + ,SWP_MOVE + ); + ::WinQueryWindowPos(pChild->GetHWND(), &vSwp); + pChild = NULL; + } +} // end of wxFrame::AlterChildPos // // Get size *available for subwindows* i.e. excluding menu bar, toolbar etc. // -void wxFrameOS2::DoGetClientSize( +void wxFrame::DoGetClientSize( int* pX , int* pY ) const @@ -258,13 +305,13 @@ void wxFrameOS2::DoGetClientSize( *pX = vRect.xRight - vRect.xLeft; if (pY) *pY = vRect.yTop - vRect.yBottom; -} // end of wxFrameOS2::DoGetClientSize +} // end of wxFrame::DoGetClientSize // // Set the client size (i.e. leave the calculation of borders etc. // to wxWindows) // -void wxFrameOS2::DoSetClientSize( +void wxFrame::DoSetClientSize( int nWidth , int nHeight ) @@ -281,25 +328,23 @@ void wxFrameOS2::DoSetClientSize( // and the client area; add this to the new client size to move the // window. Remember OS/2's backwards y coord system! // - int nActualWidth = vRect2.xRight - vRect2.xLeft - vRect.xRight + nWidth; - int nActualHeight = vRect2.yTop + vRect2.yTop - vRect.yTop + nHeight; + int nActualWidth = vRect2.xRight - vRect2.xLeft - vRect.xRight; + int nActualHeight = vRect2.yTop + vRect2.yTop - vRect.yTop; #if wxUSE_STATUSBAR - if ( GetStatusBar() ) - { - int nStatusX; - int nStatusY; + wxStatusBar* pStatusBar = GetStatusBar(); - GetStatusBar()->GetClientSize( &nStatusX - ,&nStatusY - ); - nActualHeight += nStatusY; + if (pStatusBar && pStatusBar->IsShown()) + { + nActualHeight += pStatusBar->GetSize().y; } + #endif // wxUSE_STATUSBAR wxPoint vPoint(GetClientAreaOrigin()); - nActualWidth += vPoint.y; - nActualHeight += vPoint.x; + + nActualWidth += vPoint.x; + nActualHeight += vPoint.y; POINTL vPointl; @@ -322,9 +367,9 @@ void wxFrameOS2::DoSetClientSize( ); vEvent.SetEventObject(this); GetEventHandler()->ProcessEvent(vEvent); -} // end of wxFrameOS2::DoSetClientSize +} // end of wxFrame::DoSetClientSize -void wxFrameOS2::DoGetSize( +void wxFrame::DoGetSize( int* pWidth , int* pHeight ) const @@ -334,9 +379,9 @@ void wxFrameOS2::DoGetSize( ::WinQueryWindowRect(m_hFrame, &vRect); *pWidth = vRect.xRight - vRect.xLeft; *pHeight = vRect.yTop - vRect.yBottom; -} // end of wxFrameOS2::DoGetSize +} // end of wxFrame::DoGetSize -void wxFrameOS2::DoGetPosition( +void wxFrame::DoGetPosition( int* pX , int* pY ) const @@ -348,27 +393,37 @@ void wxFrameOS2::DoGetPosition( *pX = vRect.xRight - vRect.xLeft; *pY = vRect.yTop - vRect.yBottom; -} // end of wxFrameOS2::DoGetPosition +} // end of wxFrame::DoGetPosition // ---------------------------------------------------------------------------- // variations around ::ShowWindow() // ---------------------------------------------------------------------------- -void wxFrameOS2::DoShowWindow( +void wxFrame::DoShowWindow( int bShowCmd ) { ::WinShowWindow(m_hFrame, (BOOL)bShowCmd); m_bIconized = bShowCmd == SWP_MINIMIZE; -} // end of wxFrameOS2::DoShowWindow +} // end of wxFrame::DoShowWindow -bool wxFrameOS2::Show( +bool wxFrame::Show( bool bShow ) { + int nShowCmd; SWP vSwp; - DoShowWindow((int)bShow); + if (bShow) + { + nShowCmd = SWP_SHOW; + } + else // hide + { + nShowCmd = SWP_HIDE; + } + + DoShowWindow(nShowCmd); if (bShow) { @@ -376,6 +431,7 @@ bool wxFrameOS2::Show( ::WinQueryWindowPos(m_hFrame, &vSwp); m_bIconized = vSwp.fl & SWP_MINIMIZE; + ::WinQueryWindowPos(m_hWnd, &m_vSwpClient); ::WinSendMsg(m_hFrame, WM_UPDATEFRAME, (MPARAM)~0, 0); ::WinEnableWindow(m_hFrame, TRUE); vEvent.SetEventObject(this); @@ -405,27 +461,27 @@ bool wxFrameOS2::Show( } } return TRUE; -} // end of wxFrameOS2::Show +} // end of wxFrame::Show -void wxFrameOS2::Iconize( +void wxFrame::Iconize( bool bIconize ) { DoShowWindow(bIconize ? SWP_MINIMIZE : SWP_RESTORE); -} // end of wxFrameOS2::Iconize +} // end of wxFrame::Iconize -void wxFrameOS2::Maximize( +void wxFrame::Maximize( bool bMaximize) { DoShowWindow(bMaximize ? SWP_MAXIMIZE : SWP_RESTORE); -} // end of wxFrameOS2::Maximize +} // end of wxFrame::Maximize -void wxFrameOS2::Restore() +void wxFrame::Restore() { DoShowWindow(SWP_RESTORE); -} // end of wxFrameOS2::Restore +} // end of wxFrame::Restore -bool wxFrameOS2::IsIconized() const +bool wxFrame::IsIconized() const { SWP vSwp; @@ -436,19 +492,19 @@ bool wxFrameOS2::IsIconized() const else ((wxFrame*)this)->m_bIconized = FALSE; return m_bIconized; -} // end of wxFrameOS2::IsIconized +} // end of wxFrame::IsIconized // Is it maximized? -bool wxFrameOS2::IsMaximized() const +bool wxFrame::IsMaximized() const { SWP vSwp; bool bIconic; ::WinQueryWindowPos(m_hFrame, &vSwp); return (vSwp.fl & SWP_MAXIMIZE); -} // end of wxFrameOS2::IsMaximized +} // end of wxFrame::IsMaximized -void wxFrameOS2::SetIcon( +void wxFrame::SetIcon( const wxIcon& rIcon ) { @@ -467,10 +523,10 @@ void wxFrameOS2::SetIcon( ,(MPARAM)0 ); } -} // end of wxFrameOS2::SetIcon +} // end of wxFrame::SetIcon #if wxUSE_STATUSBAR -wxStatusBar* wxFrameOS2::OnCreateStatusBar( +wxStatusBar* wxFrame::OnCreateStatusBar( int nNumber , long lulStyle , wxWindowID vId @@ -505,9 +561,9 @@ wxStatusBar* wxFrameOS2::OnCreateStatusBar( ::WinSendMsg(m_hFrame, WM_UPDATEFRAME, (MPARAM)~0, 0); return pStatusBar; -} // end of wxFrameOS2::OnCreateStatusBar +} // end of wxFrame::OnCreateStatusBar -void wxFrameOS2::PositionStatusBar() +void wxFrame::PositionStatusBar() { SWP vSwp; ERRORID vError; @@ -519,6 +575,7 @@ void wxFrameOS2::PositionStatusBar() if (m_frameStatusBar) { int nWidth; + int nY; int nStatbarWidth; int nStatbarHeight; HWND hWndClient; @@ -526,21 +583,24 @@ void wxFrameOS2::PositionStatusBar() RECTL vFRect; ::WinQueryWindowRect(m_hFrame, &vRect); + nY = vRect.yTop; ::WinMapWindowPoints(m_hFrame, HWND_DESKTOP, (PPOINTL)&vRect, 2); vFRect = vRect; ::WinCalcFrameRect(m_hFrame, &vRect, TRUE); nWidth = vRect.xRight - vRect.xLeft; + nY = nY - (vRect.yBottom - vFRect.yBottom); m_frameStatusBar->GetSize( &nStatbarWidth ,&nStatbarHeight ); + nY= nY - nStatbarHeight; // // Since we wish the status bar to be directly under the client area, // we use the adjusted sizes without using wxSIZE_NO_ADJUSTMENTS. // m_frameStatusBar->SetSize( vRect.xLeft - vFRect.xLeft - ,vRect.yBottom - vFRect.yBottom + ,nY ,nWidth ,nStatbarHeight ); @@ -552,19 +612,20 @@ void wxFrameOS2::PositionStatusBar() return; } } -} // end of wxFrameOS2::PositionStatusBar +} // end of wxFrame::PositionStatusBar #endif // wxUSE_STATUSBAR -void wxFrameOS2::DetachMenuBar() +#if wxUSE_MENUS_NATIVE +void wxFrame::DetachMenuBar() { if (m_frameMenuBar) { m_frameMenuBar->Detach(); m_frameMenuBar = NULL; } -} // end of wxFrameOS2::DetachMenuBar +} // end of wxFrame::DetachMenuBar -void wxFrameOS2::SetMenuBar( +void wxFrame::SetMenuBar( wxMenuBar* pMenuBar ) { @@ -615,12 +676,14 @@ void wxFrameOS2::SetMenuBar( m_frameMenuBar = pMenuBar; pMenuBar->Attach((wxFrame*)this); } -} // end of wxFrameOS2::SetMenuBar +} // end of wxFrame::SetMenuBar -void wxFrameOS2::AttachMenuBar( +void wxFrame::AttachMenuBar( wxMenuBar* pMenubar ) { + wxFrameBase::AttachMenuBar(pMenubar); + m_frameMenuBar = pMenubar; if (!pMenubar) @@ -652,9 +715,9 @@ void wxFrameOS2::AttachMenuBar( } InternalSetMenuBar(); } -} // end of wxFrameOS2::AttachMenuBar +} // end of wxFrame::AttachMenuBar -void wxFrameOS2::InternalSetMenuBar() +void wxFrame::InternalSetMenuBar() { ERRORID vError; wxString sError; @@ -675,12 +738,13 @@ void wxFrameOS2::InternalSetMenuBar() wxLogError("Error setting parent for submenu. Error: %s\n", sError); } ::WinSendMsg(m_hFrame, WM_UPDATEFRAME, (MPARAM)FCF_MENU, (MPARAM)0); -} // end of wxFrameOS2::InternalSetMenuBar +} // end of wxFrame::InternalSetMenuBar +#endif // wxUSE_MENUS_NATIVE // // Responds to colour changes, and passes event on to children // -void wxFrameOS2::OnSysColourChanged( +void wxFrame::OnSysColourChanged( wxSysColourChangedEvent& rEvent ) { @@ -701,10 +765,10 @@ void wxFrameOS2::OnSysColourChanged( // Propagate the event to the non-top-level children // wxWindow::OnSysColourChanged(rEvent); -} // end of wxFrameOS2::OnSysColourChanged +} // end of wxFrame::OnSysColourChanged // Pass TRUE to show full screen, FALSE to restore. -bool wxFrameOS2::ShowFullScreen( +bool wxFrame::ShowFullScreen( bool bShow , long lStyle ) @@ -718,11 +782,11 @@ bool wxFrameOS2::ShowFullScreen( m_lFsStyle = lStyle; #if wxUSE_TOOLBAR - wxToolBar* pTheToolBar = GetToolBar(); + wxToolBar* pTheToolBar = GetToolBar(); #endif //wxUSE_TOOLBAR #if wxUSE_STATUSBAR - wxStatusBar* pTheStatusBar = GetStatusBar(); + wxStatusBar* pTheStatusBar = GetStatusBar(); #endif //wxUSE_STATUSBAR int nDummyWidth; @@ -891,12 +955,12 @@ bool wxFrameOS2::ShowFullScreen( ); return TRUE; } -} // end of wxFrameOS2::ShowFullScreen +} // end of wxFrame::ShowFullScreen // // Frame window // -bool wxFrameOS2::OS2Create( +bool wxFrame::OS2Create( int nId , wxWindow* pParent , const wxChar* zWclass @@ -1053,6 +1117,17 @@ bool wxFrameOS2::OS2Create( // Now size everything. If adding a menu the client will need to be resized. // + if (pParent) + { + nY = pParent->GetSize().y - (nY + nHeight); + } + else + { + RECTL vRect; + + ::WinQueryWindowRect(HWND_DESKTOP, &vRect); + nY = vRect.yTop - (nY + nHeight); + } if (!::WinSetWindowPos( m_hFrame ,HWND_TOP ,nX @@ -1067,31 +1142,14 @@ bool wxFrameOS2::OS2Create( wxLogError("Error sizing frame. Error: %s\n", sError); return FALSE; } - // - // We may have to be smarter here when variable sized toolbars are added! - // - if (!::WinSetWindowPos( m_hWnd - ,HWND_TOP - ,nX // + 20 - ,nY // + 20 - ,nWidth // - 60 - ,nHeight // - 60 - ,SWP_SIZE | SWP_MOVE | SWP_ACTIVATE | SWP_ZORDER - )) - { - vError = ::WinGetLastError(vHabmain); - sError = wxPMErrorToStr(vError); - wxLogError("Error sizing client. Error: %s\n", sError); - return FALSE; - } return TRUE; -} // end of wxFrameOS2::OS2Create +} // end of wxFrame::OS2Create // // Default activation behaviour - set the focus for the first child // subwindow found. // -void wxFrameOS2::OnActivate( +void wxFrame::OnActivate( wxActivateEvent& rEvent ) { @@ -1142,7 +1200,7 @@ void wxFrameOS2::OnActivate( } } } -} // end of wxFrameOS2::OnActivate +} // end of wxFrame::OnActivate // ---------------------------------------------------------------------------- // wxFrame size management: we exclude the areas taken by menu/status/toolbars @@ -1151,7 +1209,7 @@ void wxFrameOS2::OnActivate( // ---------------------------------------------------------------------------- // Checks if there is a toolbar, and returns the first free client position -wxPoint wxFrameOS2::GetClientAreaOrigin() const +wxPoint wxFrame::GetClientAreaOrigin() const { wxPoint vPoint(0, 0); @@ -1177,7 +1235,7 @@ wxPoint wxFrameOS2::GetClientAreaOrigin() const } #endif //wxUSE_TOOLBAR return vPoint; -} // end of wxFrameOS2::GetClientAreaOrigin +} // end of wxFrame::GetClientAreaOrigin // ---------------------------------------------------------------------------- // tool/status bar stuff @@ -1185,7 +1243,7 @@ wxPoint wxFrameOS2::GetClientAreaOrigin() const #if wxUSE_TOOLBAR -wxToolBar* wxFrameOS2::CreateToolBar( +wxToolBar* wxFrame::CreateToolBar( long lStyle , wxWindowID vId , const wxString& rName @@ -1199,9 +1257,9 @@ wxToolBar* wxFrameOS2::CreateToolBar( PositionToolBar(); } return m_frameToolBar; -} // end of wxFrameOS2::CreateToolBar +} // end of wxFrame::CreateToolBar -void wxFrameOS2::PositionToolBar() +void wxFrame::PositionToolBar() { HWND hWndClient; RECTL vRect; @@ -1250,7 +1308,7 @@ void wxFrameOS2::PositionToolBar() ,wxSIZE_NO_ADJUSTMENTS ); } -} // end of wxFrameOS2::PositionToolBar +} // end of wxFrame::PositionToolBar #endif // wxUSE_TOOLBAR // ---------------------------------------------------------------------------- @@ -1262,7 +1320,7 @@ void wxFrameOS2::PositionToolBar() // Windows behaviour where child frames float independently of the parent one // on the desktop, but are iconized/restored with it // -void wxFrameOS2::IconizeChildFrames( +void wxFrame::IconizeChildFrames( bool bIconize ) { @@ -1271,13 +1329,33 @@ void wxFrameOS2::IconizeChildFrames( pNode = pNode->GetNext() ) { wxWindow* pWin = pNode->GetData(); + wxFrame* pFrame = wxDynamicCast(pWin, wxFrame); - if (pWin->IsKindOf(CLASSINFO(wxFrame)) ) + if ( pFrame +#if wxUSE_MDI_ARCHITECTURE + && !wxDynamicCast(pFrame, wxMDIChildFrame) +#endif // wxUSE_MDI_ARCHITECTURE + ) { - ((wxFrame *)pWin)->Iconize(bIconize); + // + // We don't want to restore the child frames which had been + // iconized even before we were iconized, so save the child frame + // status when iconizing the parent frame and check it when + // restoring it. + // + if (bIconize) + { + pFrame->m_bWasMinimized = pFrame->IsIconized(); + } + + // + // This test works for both iconizing and restoring + // + if (!pFrame->m_bWasMinimized) + pFrame->Iconize(bIconize); } } -} // end of wxFrameOS2::IconizeChildFrames +} // end of wxFrame::IconizeChildFrames // =========================================================================== // message processing @@ -1286,7 +1364,7 @@ void wxFrameOS2::IconizeChildFrames( // --------------------------------------------------------------------------- // preprocessing // --------------------------------------------------------------------------- -bool wxFrameOS2::OS2TranslateMessage( +bool wxFrame::OS2TranslateMessage( WXMSG* pMsg ) { @@ -1295,21 +1373,21 @@ bool wxFrameOS2::OS2TranslateMessage( // wxMenuBar* pMenuBar = GetMenuBar(); - if (!pMenuBar ) + if (!pMenuBar) return FALSE; -#if wxUSE_ACCEL +#if wxUSE_ACCEL && wxUSE_MENUS_NATIVE const wxAcceleratorTable& rAcceleratorTable = pMenuBar->GetAccelTable(); return rAcceleratorTable.Translate(GetHWND(), pMsg); #else return FALSE; #endif //wxUSE_ACCEL -} // end of wxFrameOS2::OS2TranslateMessage +} // end of wxFrame::OS2TranslateMessage // --------------------------------------------------------------------------- // our private (non virtual) message handlers // --------------------------------------------------------------------------- -bool wxFrameOS2::HandlePaint() +bool wxFrame::HandlePaint() { RECTL vRect; @@ -1358,7 +1436,40 @@ bool wxFrameOS2::HandlePaint() } else { - return(wxWindow::HandlePaint()); + if (!wxWindow::HandlePaint()) + { + HPS hPS; + RECTL vRect; + + hPS = ::WinBeginPaint( GetHwnd() + ,NULLHANDLE + ,&vRect + ); + if(hPS) + { + ::GpiCreateLogColorTable( hPS + ,0L + ,LCOLF_CONSECRGB + ,0L + ,(LONG)wxTheColourDatabase->m_nSize + ,(PLONG)wxTheColourDatabase->m_palTable + ); + ::GpiCreateLogColorTable( hPS + ,0L + ,LCOLF_RGB + ,0L + ,0L + ,NULL + ); + + ::WinFillRect( hPS + ,&vRect + ,GetBackgroundColour().GetPixel() + ); + ::WinEndPaint(hPS); + } + } + return TRUE; } } else @@ -1367,9 +1478,9 @@ bool wxFrameOS2::HandlePaint() return TRUE; } return FALSE; -} // end of wxFrameOS2::HandlePaint +} // end of wxFrame::HandlePaint -bool wxFrameOS2::HandleSize( +bool wxFrame::HandleSize( int nX , int nY , WXUINT nId @@ -1443,11 +1554,12 @@ bool wxFrameOS2::HandleSize( vEvent.SetEventObject(this); bProcessed = GetEventHandler()->ProcessEvent(vEvent); + AlterChildPos(); } return bProcessed; -} // end of wxFrameOS2::HandleSize +} // end of wxFrame::HandleSize -bool wxFrameOS2::HandleCommand( +bool wxFrame::HandleCommand( WXWORD nId , WXWORD nCmd , WXHWND hControl @@ -1471,6 +1583,7 @@ bool wxFrameOS2::HandleCommand( // if (nCmd == CMDSRC_MENU || nCmd == CMDSRC_ACCELERATOR) { +#if wxUSE_MENUS_NATIVE if (wxCurrentPopupMenu) { wxMenu* pPopupMenu = wxCurrentPopupMenu; @@ -1480,7 +1593,9 @@ bool wxFrameOS2::HandleCommand( return pPopupMenu->OS2Command( nCmd ,nId ); + return TRUE; } +#endif if (ProcessCommand(nId)) { @@ -1488,9 +1603,9 @@ bool wxFrameOS2::HandleCommand( } } return FALSE; -} // end of wxFrameOS2::HandleCommand +} // end of wxFrame::HandleCommand -bool wxFrameOS2::HandleMenuSelect( +bool wxFrame::HandleMenuSelect( WXWORD nItem , WXWORD nFlags , WXHMENU hMenu @@ -1512,7 +1627,7 @@ bool wxFrameOS2::HandleMenuSelect( } } return TRUE; -} // end of wxFrameOS2::HandleMenuSelect +} // end of wxFrame::HandleMenuSelect // --------------------------------------------------------------------------- // Main Frame window proc @@ -1648,7 +1763,7 @@ MRESULT EXPENTRY wxFrameWndProc( return rc; } // end of wxFrameWndProc -MRESULT wxFrameOS2::OS2WindowProc( +MRESULT wxFrame::OS2WindowProc( WXUINT uMessage , WXWPARAM wParam , WXLPARAM lParam @@ -1758,14 +1873,14 @@ MRESULT wxFrameOS2::OS2WindowProc( ,lParam ); return (MRESULT)mRc; -} // wxFrameOS2::OS2WindowProc +} // wxFrame::OS2WindowProc -void wxFrameOS2::SetClient(WXHWND c_Hwnd) +void wxFrame::SetClient(WXHWND c_Hwnd) { // Duh...nothing to do under OS/2 } -void wxFrameOS2::SetClient( +void wxFrame::SetClient( wxWindow* pWindow ) { @@ -1815,7 +1930,7 @@ void wxFrameOS2::SetClient( } } -wxWindow* wxFrameOS2::GetClient() +wxWindow* wxFrame::GetClient() { return wxFindWinFromHandle((WXHWND)::WinWindowFromID(m_hFrame, FID_CLIENT)); }