]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/statusbr.cpp
Applied patch [ 603104 ] wxX11 wxClientDC, wxPaintDC fix
[wxWidgets.git] / src / generic / statusbr.cpp
index a7c9f6387c6efef51256e17792d7615d25edfb2f..24f273375d81058090674a4374210eb1c89ad402 100644 (file)
@@ -53,7 +53,6 @@ END_EVENT_TABLE()
 
 wxStatusBarGeneric::wxStatusBarGeneric()
 {
-  m_statusStrings = (wxString *) NULL;
   m_borderX = wxTHICK_LINE_BORDER;
   m_borderY = wxTHICK_LINE_BORDER;
 }
@@ -63,17 +62,17 @@ wxStatusBarGeneric::~wxStatusBarGeneric()
 #   ifdef __WXMSW__
         SetFont(wxNullFont);
 #   endif // MSW
-
-    if ( m_statusStrings )
-        delete[] m_statusStrings;
 }
 
 bool wxStatusBarGeneric::Create(wxWindow *parent,
-                         wxWindowID id,
-                         long style,
-                         const wxString& name)
+                                wxWindowID id,
+                                long style,
+                                const wxString& name)
 {
-  m_statusStrings = (wxString *) NULL;
+    // If create is ever meant to be re-entrant over the life of
+    // an object we should:
+    // m_statusStrings.Empty();
+
   m_borderX = wxTHICK_LINE_BORDER;
   m_borderY = wxTHICK_LINE_BORDER;
 
@@ -108,13 +107,24 @@ bool wxStatusBarGeneric::Create(wxWindow *parent,
 
 void wxStatusBarGeneric::SetFieldsCount(int number, const int *widths)
 {
-    if ( number != m_nFields )
-    {
-        m_nFields = number;
+    wxASSERT_MSG( number >= 0,
+                  _T("Yes, number should be a size_t and less than no fields is silly.") );
 
-        delete[] m_statusStrings;
-        m_statusStrings = new wxString[number];
-    }
+    // if( number > m_nFields )
+
+    int i;
+    for(i = m_nFields; i < number; ++i)
+        m_statusStrings.Add( wxEmptyString );
+
+    // if( number < m_nFields )
+
+    for (i = m_nFields - 1; i >= number; --i)
+        m_statusStrings.Remove(i);
+
+    m_nFields = number;
+
+    wxASSERT_MSG( m_nFields == (int)m_statusStrings.GetCount(),
+                  _T("This really should never happen, can we do away with m_nFields here?") );
 
     SetStatusWidths(number, widths);
 }
@@ -128,7 +138,7 @@ void wxStatusBarGeneric::SetStatusText(const wxString& text, int number)
 
     wxRect rect;
     GetFieldRect(number, rect);
-    
+
     Refresh( TRUE, &rect );
 }
 
@@ -174,7 +184,7 @@ void wxStatusBarGeneric::OnPaint(wxPaintEvent& WXUNUSED(event) )
 #ifdef __WXPM__
   wxColour                          vColor;
 
-  vColor.InitFromName("LIGHT GREY");
+  vColor = wxSystemSettings::GetColour(wxSYS_COLOUR_MENUBAR);
   ::WinFillRect(dc.m_hPS, &dc.m_vRclPaint, vColor.GetPixel());
 #endif
 
@@ -243,22 +253,17 @@ void wxStatusBarGeneric::DrawField(wxDC& dc, int i)
     dc.DrawLine(rect.x, rect.y,
         rect.x + rect.width, rect.y);
 #else
-    // Right
+
+    dc.DrawLine(rect.x + rect.width, rect.height + 2,
+                rect.x, rect.height + 2);
     dc.DrawLine(rect.x + rect.width, rect.y,
-                rect.x + rect.width, rect.y + rect.height + 2);
+                rect.x + rect.width, rect.y + rect.height);
+
     dc.SetPen(m_mediumShadowPen);
-    dc.DrawLine(rect.x + rect.width + 1, rect.y,
-                rect.x + rect.width + 1, rect.y + rect.height + 2);
-    dc.DrawLine(rect.x + rect.width + 2, rect.y,
-                rect.x + rect.width + 2, rect.y + rect.height + 2);
-    // Top
-    dc.DrawLine(rect.x + rect.width + 2, rect.y,
-                rect.x - 2, rect.y);
-    dc.DrawLine(rect.x + rect.width + 1, rect.y - 1,
-                rect.x - 2, rect.y - 1);
-    dc.SetPen(m_hilightPen);
-    dc.DrawLine(rect.x + rect.width, rect.y - 2,
-                rect.x - 2, rect.y - 2);
+    dc.DrawLine(rect.x, rect.y,
+                rect.x + rect.width, rect.y);
+    dc.DrawLine(rect.x, rect.y + rect.height,
+                rect.x, rect.y);
 
 #endif
 
@@ -350,7 +355,7 @@ void wxStatusBarGeneric::InitColours()
     wxColour hilightColour(wxSystemSettings::GetColour(wxSYS_COLOUR_3DHILIGHT));
     m_hilightPen = wxPen(hilightColour, 1, wxSOLID);
 #elif defined(__WXPM__)
-    m_mediumShadowPen = wxPen("DARK GREY", 1, wxSOLID);
+    m_mediumShadowPen = wxPen(wxColour(127, 127, 127), 1, wxSOLID);
     m_hilightPen = wxPen("WHITE", 1, wxSOLID);
 
     wxColour                        vColour;
@@ -396,3 +401,5 @@ void wxStatusBarGeneric::SetMinHeight(int height)
 }
 
 #endif // wxUSE_STATUSBAR
+
+// vi:sts=4:sw=4:et