]> git.saurik.com Git - wxWidgets.git/commitdiff
fix push/pop mechanism after r58786; add a few notes about the stack mechanism both...
authorFrancesco Montorsi <f18m_cpp217828@yahoo.it>
Fri, 24 Apr 2009 21:14:59 +0000 (21:14 +0000)
committerFrancesco Montorsi <f18m_cpp217828@yahoo.it>
Fri, 24 Apr 2009 21:14:59 +0000 (21:14 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@60321 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/statusbr.h
interface/wx/statusbr.h
src/common/statbar.cpp

index 216bdecd3df06e13e6be9ef76a222e09a867b599..e01cfa21b9e008d9bf547bbf290e6e4c3d0b1f4c 100644 (file)
@@ -105,6 +105,8 @@ public:
     // field text
     // ----------
 
     // field text
     // ----------
 
+    // NOTE: even if it is not pure virtual, SetStatusText() must be overloaded by 
+    //       the derived classes to update the given text in the native control
     virtual void SetStatusText(const wxString& text, int number = 0)
         { m_panes[number].GetStack().Last() = text; }
     virtual wxString GetStatusText(int number = 0) const
     virtual void SetStatusText(const wxString& text, int number = 0)
         { m_panes[number].GetStack().Last() = text; }
     virtual wxString GetStatusText(int number = 0) const
index f91767c5e228ae634e3d10cf2e41241eabdccc76..2f86d493d9affc964507574322ed997e475de157 100644 (file)
@@ -53,6 +53,9 @@ public:
     to give small amounts of status information. It can contain one or more fields,
     one or more of which can be variable length according to the size of the window.
     
     to give small amounts of status information. It can contain one or more fields,
     one or more of which can be variable length according to the size of the window.
     
+    wxStatusBar also maintains an independent stack of status texts for each field
+    (see PushStatusText() and PopStatusText()).
+
     Note that in wxStatusBar context, the terms @e pane and @e field are synonyms.
 
     @beginStyleTable
     Note that in wxStatusBar context, the terms @e pane and @e field are synonyms.
 
     @beginStyleTable
@@ -195,7 +198,7 @@ public:
     void PopStatusText(int field = 0);
 
     /**
     void PopStatusText(int field = 0);
 
     /**
-        Saves the current field text in a per field stack, and sets the field text
+        Saves the current field text in a per-field stack, and sets the field text
         to the string passed as argument.
 
         @see PopStatusText()
         to the string passed as argument.
 
         @see PopStatusText()
@@ -239,7 +242,11 @@ public:
     virtual void SetStatusStyles(int n, const int* styles);
 
     /**
     virtual void SetStatusStyles(int n, const int* styles);
 
     /**
-        Sets the text for one field.
+        Sets the status text for the @a i-th field.
+        
+        The given text will replace the current text. Note that unlike PushStatusText()
+        this function won't save the current text (and calling PopStatusText() won't
+        restore it!).
 
         @param text
             The text to be set. Use an empty string ("") to clear the field.
 
         @param text
             The text to be set. Use an empty string ("") to clear the field.
index a05afa4b1b83b8d995817612898965b0110726f5..0dee67251b60d710ec495f5989452c4acbed7ad0 100644 (file)
@@ -191,22 +191,25 @@ wxArrayInt wxStatusBarBase::CalculateAbsWidths(wxCoord widthTotal) const
 
 void wxStatusBarBase::PushStatusText(const wxString& text, int number)
 {
 
 void wxStatusBarBase::PushStatusText(const wxString& text, int number)
 {
-    // save current status text in the stack
-    m_panes[number].m_arrStack.push_back(GetStatusText(number));
+    // save the new text (in non-ellipsized form) in the stack
+    m_panes[number].m_arrStack.push_back(text);
 
     SetStatusText(text, number);
 
     SetStatusText(text, number);
-        // update current status text (eventually also in the native control)
+        // update current status text (which will possibly be ellipsized) 
+        // also in the native control
 }
 
 void wxStatusBarBase::PopStatusText(int number)
 {
 }
 
 void wxStatusBarBase::PopStatusText(int number)
 {
-    wxASSERT_MSG(m_panes[number].m_arrStack.GetCount() == 1,
+    wxASSERT_MSG(m_panes[number].m_arrStack.GetCount() >= 1,
                  "can't pop any further string");
 
                  "can't pop any further string");
 
-    wxString text = m_panes[number].m_arrStack.back();
-    m_panes[number].m_arrStack.pop_back();  // also remove it from the stack
+    // the top of the stack is the status text currently shown in the native control;
+    // remove it
+    m_panes[number].m_arrStack.pop_back();
 
 
-    // restore the popped status text in the pane
+    // restore the previous status text in the native control
+    const wxString& text = m_panes[number].m_arrStack.back();
     SetStatusText(text, number);
 }
 
     SetStatusText(text, number);
 }