optimize rendering code by calling GetClientSize(), GetTextExtent() and CalculateAbsWidth() only when strictly needed; update cache from an OnSize() event handler; fix RTL code: wxDC::DrawText() is RTL-aware itself and doesn't need special calculations

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58770 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Francesco Montorsi
2009-02-08 19:17:07 +00:00
parent 91d55088c9
commit ba4589db1d
2 changed files with 67 additions and 84 deletions

View File

@@ -65,24 +65,27 @@ public:
virtual int GetBorderY() const { return m_borderY; }
protected:
virtual void DrawFieldText(wxDC& dc, int i);
virtual void DrawField(wxDC& dc, int i);
void SetBorderX(int x);
void SetBorderY(int y);
protected: // event handlers
void OnPaint(wxPaintEvent& event);
void OnSize(wxSizeEvent& event);
void OnLeftDown(wxMouseEvent& event);
void OnRightDown(wxMouseEvent& event);
virtual void InitColours();
// Responds to colour changes
void OnSysColourChanged(wxSysColourChangedEvent& event);
protected:
virtual void DrawFieldText(wxDC& dc, const wxRect& rc, int i, int textHeight);
virtual void DrawField(wxDC& dc, int i, int textHeight);
void SetBorderX(int x);
void SetBorderY(int y);
virtual void InitColours();
// true if the status bar shows the size grip: for this it must have
// wxST_SIZEGRIP style and the window it is attached to must be resizeable
// and not maximized
@@ -97,8 +100,8 @@ protected:
// the array of the currently displayed strings
wxArrayString m_statusStrings;
// the last known width of the client rect (used to rebuild cache)
int m_lastClientWidth;
// the last known height of the client rect
int m_lastClientHeight;
// the absolute widths of the status bar panes in pixels
wxArrayInt m_widthsAbs;