X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5d44b24ee63543390aa28e1eb4ff162da4264838..b2261c5bb8eff491a42eddc817a4c1fd1d9db15f:/src/os2/frame.cpp diff --git a/src/os2/frame.cpp b/src/os2/frame.cpp index 261c01de4c..4c345bcea7 100644 --- a/src/os2/frame.cpp +++ b/src/os2/frame.cpp @@ -30,6 +30,7 @@ #include "wx/dialog.h" #include "wx/settings.h" #include "wx/dcclient.h" + #include "wx/mdi.h" #endif // WX_PRECOMP #include "wx/os2/private.h" @@ -52,7 +53,6 @@ extern wxWindowList wxModelessWindows; extern wxList WXDLLEXPORT wxPendingDelete; -extern const wxChar* wxFrameClassName; #if wxUSE_MENUS_NATIVE extern wxMenu *wxCurrentPopupMenu; @@ -67,7 +67,6 @@ extern void wxAssociateWinWithHandle( HWND hWnd // ---------------------------------------------------------------------------- BEGIN_EVENT_TABLE(wxFrame, wxFrameBase) - EVT_ACTIVATE(wxFrame::OnActivate) EVT_SYS_COLOUR_CHANGED(wxFrame::OnSysColourChanged) END_EVENT_TABLE() @@ -101,7 +100,6 @@ void wxFrame::Init() m_nFsToolBarHeight = 0; m_hWndToolTip = 0L; m_bWasMinimized = FALSE; - m_pWinLastFocused = NULL; m_frameMenuBar = NULL; @@ -144,7 +142,6 @@ bool wxFrame::Create( ,rsName )) return FALSE; - SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE)); wxModelessWindows.Append(this); return TRUE; } // end of wxFrame::Create @@ -211,21 +208,6 @@ void wxFrame::Raise() ); } -// generate an artificial resize event -void wxFrame::SendSizeEvent() -{ - if (!m_bIconized) - { - RECTL vRect = wxGetWindowRect(GetHwnd()); - - (void)::WinPostMsg( m_hFrame - ,WM_SIZE - ,MPFROM2SHORT(vRect.xRight - vRect.xLeft, vRect.yTop - vRect.yBottom) - ,MPFROM2SHORT(vRect.xRight - vRect.xLeft, vRect.yTop - vRect.yBottom) - ); - } -} - #if wxUSE_STATUSBAR wxStatusBar* wxFrame::OnCreateStatusBar( int nNumber @@ -248,6 +230,26 @@ wxStatusBar* wxFrame::OnCreateStatusBar( if( !pStatusBar ) return NULL; + wxClientDC vDC(pStatusBar); + int nY; + + // + // 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" + ,NULL + ,&nY + ); + + int nHeight = ((11 * nY) / 10 + 2 * pStatusBar->GetBorderY()); + + pStatusBar->SetSize( -1 + ,-1 + ,-1 + ,nHeight + ); + ::WinSetParent( pStatusBar->GetHWND() ,m_hFrame ,FALSE @@ -449,7 +451,7 @@ void wxFrame::OnSysColourChanged( wxSysColourChangedEvent& rEvent ) { - SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE)); + SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_APPWORKSPACE)); Refresh(); #if wxUSE_STATUSBAR @@ -654,70 +656,13 @@ bool wxFrame::ShowFullScreen( ,m_vFsOldSize.height ,SWP_SIZE | SWP_SHOW ); - return TRUE; } + return wxFrameBase::ShowFullScreen(bShow, lStyle); } // end of wxFrame::ShowFullScreen // // Frame window // -// -// Default activation behaviour - set the focus for the first child -// subwindow found. -// -void wxFrame::OnActivate( - wxActivateEvent& rEvent -) -{ - if ( rEvent.GetActive() ) - { - // restore focus to the child which was last focused - wxLogTrace(_T("focus"), _T("wxFrame %08x activated."), m_hWnd); - - wxWindow* pParent = m_pWinLastFocused ? m_pWinLastFocused->GetParent() - : NULL; - if (!pParent) - { - pParent = this; - } - - wxSetFocusToChild( pParent - ,&m_pWinLastFocused - ); - } - else // deactivating - { - // - // Remember the last focused child if it is our child - // - m_pWinLastFocused = FindFocus(); - - for (wxWindowList::Node* pNode = GetChildren().GetFirst(); - pNode; - pNode = pNode->GetNext()) - { - // FIXME all this is totally bogus - we need to do the same as wxPanel, - // but how to do it without duplicating the code? - - // restore focus - wxWindow* pChild = pNode->GetData(); - - if (!pChild->IsTopLevel() -#if wxUSE_TOOLBAR - && !wxDynamicCast(pChild, wxToolBar) -#endif // wxUSE_TOOLBAR -#if wxUSE_STATUSBAR - && !wxDynamicCast(pChild, wxStatusBar) -#endif // wxUSE_STATUSBAR - ) - { - pChild->SetFocus(); - return; - } - } - } -} // end of wxFrame::OnActivate - // ---------------------------------------------------------------------------- // wxFrame size management: we exclude the areas taken by menu/status/toolbars // from the client area, so the client area is what's really available for the @@ -919,9 +864,10 @@ bool wxFrame::HandlePaint() // // Icons in PM are the same as "pointers" // + const wxIcon& vIcon = GetIcon(); HPOINTER hIcon; - if (m_icon.Ok()) + if (vIcon.Ok()) hIcon = (HPOINTER)::WinSendMsg(m_hFrame, WM_QUERYICON, 0L, 0L); else hIcon = (HPOINTER)m_hDefaultIcon; @@ -1067,15 +1013,10 @@ bool wxFrame::HandleSize( PositionToolBar(); #endif // wxUSE_TOOLBAR - wxSizeEvent vEvent( wxSize( nX - ,nY - ) - ,m_windowId - ); - - vEvent.SetEventObject(this); - bProcessed = GetEventHandler()->ProcessEvent(vEvent); - AlterChildPos(); + bProcessed = wxWindow::HandleSize( nX + ,nY + ,nId + ); } return bProcessed; } // end of wxFrame::HandleSize @@ -1146,6 +1087,11 @@ bool wxFrame::HandleMenuSelect( vEvent.SetEventObject(this); GetEventHandler()->ProcessEvent(vEvent); // return value would be ignored by PM } + else + { + DoGiveHelp(wxEmptyString, FALSE); + return FALSE; + } } return TRUE; } // end of wxFrame::HandleMenuSelect @@ -1376,9 +1322,10 @@ MRESULT wxFrame::OS2WindowProc( case CM_QUERYDRAGIMAGE: { + const wxIcon& vIcon = GetIcon(); HPOINTER hIcon; - if (m_icon.Ok()) + if (vIcon.Ok()) hIcon = (HPOINTER)::WinSendMsg(GetHWND(), WM_QUERYICON, 0L, 0L); else hIcon = (HPOINTER)m_hDefaultIcon;