]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/framecmn.cpp
UsePrimarySelection
[wxWidgets.git] / src / common / framecmn.cpp
index 55ce182110342e95c670bb939ae91da370f67ebb..8ab73139d86d4f4a59444f19f49378c18d18cfa2 100644 (file)
@@ -76,6 +76,13 @@ wxFrameBase::wxFrameBase()
 #if wxUSE_STATUSBAR
     m_frameStatusBar = NULL;
 #endif // wxUSE_STATUSBAR
+
+    m_statusBarPane = 0;
+}
+
+wxFrameBase::~wxFrameBase()
+{
+    // this destructor is required for Darwin
 }
 
 wxFrame *wxFrameBase::New(wxWindow *parent,
@@ -147,13 +154,14 @@ wxPoint wxFrameBase::GetClientAreaOrigin() const
 {
     wxPoint pt = wxTopLevelWindow::GetClientAreaOrigin();
 
-#if wxUSE_TOOLBAR
-    if ( GetToolBar() && GetToolBar()->IsShown() )
+#if wxUSE_TOOLBAR && !defined(__WXUNIVERSAL__)
+    wxToolBar *toolbar = GetToolBar();
+    if ( toolbar && toolbar->IsShown() )
     {
         int w, h;
-        GetToolBar()->GetSize(& w, & h);
+        toolbar->GetSize(&w, &h);
 
-        if ( GetToolBar()->GetWindowStyleFlag() & wxTB_VERTICAL )
+        if ( toolbar->GetWindowStyleFlag() & wxTB_VERTICAL )
         {
             pt.x += w;
         }
@@ -182,12 +190,18 @@ bool wxFrameBase::ProcessCommand(int id)
     commandEvent.SetEventObject(this);
 
     wxMenuItem *item = bar->FindItem(id);
-    if ( item && item->IsCheckable() )
+    if (item)
     {
-        item->Toggle();
+        if (!item->IsEnabled())
+            return TRUE;
+
+        if (item->IsCheckable())
+        {
+            item->Toggle();
 
-        // use the new value
-        commandEvent.SetInt(item->IsChecked());
+            // use the new value
+            commandEvent.SetInt(item->IsChecked());
+        }
     }
 
     return GetEventHandler()->ProcessEvent(commandEvent);
@@ -265,16 +279,40 @@ 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);
+}
+
+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
+}
+
+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 )
@@ -287,9 +325,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
@@ -398,8 +434,8 @@ void wxFrameBase::AttachMenuBar(wxMenuBar *menubar)
 {
     if ( menubar )
     {
-        m_frameMenuBar = menubar;
         menubar->Attach((wxFrame *)this);
+        m_frameMenuBar = menubar;
     }
 }