X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/799ea01170e831c212320b0cb3038a91785e4789..e1720942b02fdf109d23a519bf21033483b4bdab:/src/common/framecmn.cpp diff --git a/src/common/framecmn.cpp b/src/common/framecmn.cpp index 544189a24c..a057189897 100644 --- a/src/common/framecmn.cpp +++ b/src/common/framecmn.cpp @@ -4,7 +4,7 @@ // Author: Julian Smart, Vadim Zeitlin // Created: 01/02/97 // Id: $Id$ -// Copyright: (c) 1998 Robert Roebling, Julian Smart and Markus Holzem +// Copyright: (c) 1998 Robert Roebling and Julian Smart // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// @@ -41,11 +41,6 @@ #include "wx/statusbr.h" #endif -// FIXME - temporary hack in absence of wxTLW in all ports! -#ifndef wxTopLevelWindowNative - #define wxTopLevelWindow wxTopLevelWindowBase -#endif - // ---------------------------------------------------------------------------- // event table // ---------------------------------------------------------------------------- @@ -76,6 +71,8 @@ wxFrameBase::wxFrameBase() #if wxUSE_STATUSBAR m_frameStatusBar = NULL; #endif // wxUSE_STATUSBAR + + m_statusBarPane = 0; } wxFrameBase::~wxFrameBase() @@ -152,7 +149,7 @@ wxPoint wxFrameBase::GetClientAreaOrigin() const { wxPoint pt = wxTopLevelWindow::GetClientAreaOrigin(); -#if wxUSE_TOOLBAR +#if wxUSE_TOOLBAR && !defined(__WXUNIVERSAL__) wxToolBar *toolbar = GetToolBar(); if ( toolbar && toolbar->IsShown() ) { @@ -196,12 +193,14 @@ bool wxFrameBase::ProcessCommand(int id) if (item->IsCheckable()) { item->Toggle(); + // use the new value commandEvent.SetInt(item->IsChecked()); } } - return GetEventHandler()->ProcessEvent(commandEvent); + GetEventHandler()->ProcessEvent(commandEvent); + return TRUE; #else // !wxUSE_MENUS return FALSE; #endif // wxUSE_MENUS/!wxUSE_MENUS @@ -276,16 +275,28 @@ void wxFrameBase::SetStatusWidths(int n, const int widths_field[] ) PositionStatusBar(); } -bool wxFrameBase::ShowMenuHelp(wxStatusBar *statbar, int menuId) +void wxFrameBase::PushStatusText(const wxString& text, int number) { -#if wxUSE_MENUS - if ( !statbar ) - return FALSE; + wxCHECK_RET( m_frameStatusBar != NULL, wxT("no statusbar to set text for") ); + + m_frameStatusBar->PushStatusText(text, number); +} + +void wxFrameBase::PopStatusText(int number) +{ + wxCHECK_RET( m_frameStatusBar != NULL, wxT("no statusbar to set text for") ); + m_frameStatusBar->PopStatusText(number); +} + +bool wxFrameBase::ShowMenuHelp(wxStatusBar *WXUNUSED(statbar), int menuId) +{ +#if wxUSE_MENUS // if no help string found, we will clear the status bar text wxString helpString; + bool show = menuId != wxID_SEPARATOR && menuId != -2 /* wxID_TITLE */; - if ( menuId != wxID_SEPARATOR && menuId != -2 /* wxID_TITLE */ ) + if ( show ) { wxMenuBar *menuBar = GetMenuBar(); if ( menuBar ) @@ -298,9 +309,7 @@ bool wxFrameBase::ShowMenuHelp(wxStatusBar *statbar, int menuId) } } - // set status text even if the string is empty - this will at least - // remove the string from the item which was previously selected - statbar->SetStatusText(helpString); + DoGiveHelp(helpString, show); return !helpString.IsEmpty(); #else // !wxUSE_MENUS @@ -310,6 +319,19 @@ bool wxFrameBase::ShowMenuHelp(wxStatusBar *statbar, int menuId) #endif // wxUSE_STATUSBAR +void wxFrameBase::DoGiveHelp(const wxString& text, bool show) +{ +#if wxUSE_STATUSBAR + if ( m_statusBarPane < 0 ) return; + wxStatusBar* statbar = GetStatusBar(); + if ( !statbar ) return; + + wxString help = show ? text : wxString(); + statbar->SetStatusText( help, m_statusBarPane ); +#endif // wxUSE_STATUSBAR +} + + // ---------------------------------------------------------------------------- // toolbar stuff // ---------------------------------------------------------------------------- @@ -390,7 +412,7 @@ void wxFrameBase::DoMenuUpdates(wxMenu* menu, wxWindow* focusWin) } if (item->GetSubMenu()) - DoMenuUpdates(item->GetSubMenu(), (wxWindow*) NULL); + DoMenuUpdates(item->GetSubMenu(), focusWin); } node = node->GetNext(); } @@ -409,8 +431,8 @@ void wxFrameBase::AttachMenuBar(wxMenuBar *menubar) { if ( menubar ) { - m_frameMenuBar = menubar; menubar->Attach((wxFrame *)this); + m_frameMenuBar = menubar; } }