Don't pop explicitly changed status messages.

Calls to SetStatusText() in between Push/PopStatusText() were simply lost
before, now the text explicitly changed by SetStatusText() is preserved by the
next call to PopStatusText().

This required adding a new virtual method, called DoUpdateStatusText(), which
is now implemented in all the derived classes instead of overriding
SetStatusText() (on the bright side, it doesn't need to do any checks already
done in the base class any more).

Also fix PushStatusText() to actually show the text being pushed at all under
wxMSW as a side effect.

And further reduce code duplication between wxStatusBarBase and the derived
classes.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61624 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2009-08-06 00:01:43 +00:00
parent 0751510c21
commit 6cf6897100
13 changed files with 210 additions and 243 deletions

View File

@@ -40,28 +40,17 @@ public:
virtual ~wxStatusBar();
// a status line can have several (<256) fields numbered from 0
// implement base class methods
virtual void SetFieldsCount(int number = 1, const int *widths = NULL);
// each field of status line has it's own text
virtual void SetStatusText(const wxString& text, int number = 0);
// set status line fields' widths
virtual void SetStatusWidths(int n, const int widths_field[]);
// set status line fields' styles
virtual void SetStatusStyles(int n, const int styles[]);
// sets the minimal vertical size of the status bar
virtual void SetMinHeight(int height);
// get the position and size of the field's internal bounding rectangle
virtual bool GetFieldRect(int i, wxRect& rect) const;
// get the border size
virtual int GetBorderX() const;
virtual int GetBorderY() const;
// override some wxWindow virtual methods too
virtual bool SetFont(const wxFont& font);
virtual WXLRESULT MSWWindowProc(WXUINT nMsg,
@@ -69,9 +58,8 @@ public:
WXLPARAM lParam);
protected:
void CopyFieldsWidth(const int widths[]);
void SetFieldsWidth();
void UpdateFieldText(int nField);
// implement base class pure virtual method
virtual void DoUpdateStatusText(int number);
// override some base class virtuals
virtual wxSize DoGetBestSize() const;
@@ -81,7 +69,10 @@ protected:
virtual bool MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM* result);
#endif
// used by UpdateFieldText
// implementation of the public SetStatusWidths()
void MSWUpdateFieldsWidths();
// used by DoUpdateStatusText()
wxClientDC *m_pDC;
// the tooltips used when wxSTB_SHOW_TIPS is given