]> git.saurik.com Git - wxWidgets.git/blobdiff - src/generic/statusbr.cpp
Allow passing multi-line strings to wxDC::DrawText(), even under MSW.
[wxWidgets.git] / src / generic / statusbr.cpp
index e1717d26db8c8057c8dd9bf753ac2b4dff6d78f8..4c24ee5c35eaadb261930f1d340cc1204d294e46 100644 (file)
@@ -75,7 +75,7 @@ gboolean statusbar_query_tooltip(GtkWidget*   WXUNUSED(widget),
     const wxString& str = statbar->GetStatusText(n);
     if (str.empty())
         return FALSE;
     const wxString& str = statbar->GetStatusText(n);
     if (str.empty())
         return FALSE;
-    
+
     gtk_tooltip_set_text(tooltip, wxGTK_CONV_SYS(str));
     return TRUE;
 }
     gtk_tooltip_set_text(tooltip, wxGTK_CONV_SYS(str));
     return TRUE;
 }
@@ -129,14 +129,14 @@ bool wxStatusBarGeneric::Create(wxWindow *parent,
     SetSize(wxDefaultCoord, wxDefaultCoord, wxDefaultCoord, height);
 
     SetFieldsCount(1);
     SetSize(wxDefaultCoord, wxDefaultCoord, wxDefaultCoord, height);
 
     SetFieldsCount(1);
-    
+
 #if defined( __WXGTK20__ )
 #if GTK_CHECK_VERSION(2,12,0)
     if (HasFlag(wxSTB_SHOW_TIPS) && !gtk_check_version(2,12,0))
     {
 #if defined( __WXGTK20__ )
 #if GTK_CHECK_VERSION(2,12,0)
     if (HasFlag(wxSTB_SHOW_TIPS) && !gtk_check_version(2,12,0))
     {
-        g_object_set(m_widget, "has-tooltip", TRUE, NULL); 
-        g_signal_connect(m_widget, "query-tooltip",  
-                         G_CALLBACK(statusbar_query_tooltip), this); 
+        g_object_set(m_widget, "has-tooltip", TRUE, NULL);
+        g_signal_connect(m_widget, "query-tooltip",
+                         G_CALLBACK(statusbar_query_tooltip), this);
     }
 #endif
 #endif
     }
 #endif
 #endif
@@ -160,41 +160,23 @@ wxSize wxStatusBarGeneric::DoGetBestSize() const
     return wxSize(width, height);
 }
 
     return wxSize(width, height);
 }
 
-void wxStatusBarGeneric::SetFieldsCount(int number, const int *widths)
-{
-    wxASSERT_MSG( number >= 0, _T("negative number of fields in wxStatusBar?") );
-
-    // this will result in a call to SetStatusWidths() and thus an update to our
-    // m_widthsAbs cache
-    wxStatusBarBase::SetFieldsCount(number, widths);
-}
-
-void wxStatusBarGeneric::SetStatusText(const wxString& text, int number)
+void wxStatusBarGeneric::DoUpdateStatusText(int number)
 {
 {
-    wxCHECK_RET( (number >= 0) && ((size_t)number < m_panes.GetCount()),
-                 _T("invalid status bar field index") );
-
-    wxString oldText = GetStatusText(number);
-    if (oldText != text)
-    {
-        wxStatusBarBase::SetStatusText(text, number);
-
-        wxRect rect;
-        GetFieldRect(number, rect);
+    wxRect rect;
+    GetFieldRect(number, rect);
 
 
-        Refresh(true, &rect);
+    Refresh(true, &rect);
 
 
-        // it's common to show some text in the status bar before starting a
-        // relatively lengthy operation, ensure that the text is shown to the
-        // user immediately and not after the lengthy operation end
-        Update();
-    }
+    // it's common to show some text in the status bar before starting a
+    // relatively lengthy operation, ensure that the text is shown to the
+    // user immediately and not after the lengthy operation end
+    Update();
 }
 
 void wxStatusBarGeneric::SetStatusWidths(int n, const int widths_field[])
 {
     // only set status widths when n == number of statuswindows
 }
 
 void wxStatusBarGeneric::SetStatusWidths(int n, const int widths_field[])
 {
     // only set status widths when n == number of statuswindows
-    wxCHECK_RET( (size_t)n == m_panes.GetCount(), _T("status bar field count mismatch") );
+    wxCHECK_RET( (size_t)n == m_panes.GetCount(), wxT("status bar field count mismatch") );
 
     wxStatusBarBase::SetStatusWidths(n, widths_field);
 
 
     wxStatusBarBase::SetStatusWidths(n, widths_field);
 
@@ -246,7 +228,7 @@ void wxStatusBarGeneric::DrawFieldText(wxDC& dc, const wxRect& rect, int i, int
     }
 
     // eventually ellipsize the text so that it fits the field width
     }
 
     // eventually ellipsize the text so that it fits the field width
-    
+
     wxEllipsizeMode ellmode = (wxEllipsizeMode)-1;
     if (HasFlag(wxSTB_ELLIPSIZE_START)) ellmode = wxELLIPSIZE_START;
     else if (HasFlag(wxSTB_ELLIPSIZE_MIDDLE)) ellmode = wxELLIPSIZE_MIDDLE;
     wxEllipsizeMode ellmode = (wxEllipsizeMode)-1;
     if (HasFlag(wxSTB_ELLIPSIZE_START)) ellmode = wxELLIPSIZE_START;
     else if (HasFlag(wxSTB_ELLIPSIZE_MIDDLE)) ellmode = wxELLIPSIZE_MIDDLE;
@@ -266,11 +248,11 @@ void wxStatusBarGeneric::DrawFieldText(wxDC& dc, const wxRect& rect, int i, int
         text = wxControl::Ellipsize(text, dc,
                                     ellmode,
                                     maxWidth,
         text = wxControl::Ellipsize(text, dc,
                                     ellmode,
                                     maxWidth,
-                                    wxELLIPSIZE_EXPAND_TAB);
+                                    wxELLIPSIZE_FLAGS_EXPAND_TABS);
             // Ellipsize() will do something only if necessary
 
             // Ellipsize() will do something only if necessary
 
-        // update the ellipsization status for this pane; this is used later to 
-        // decide whether a tooltip should be shown or not for this pane 
+        // update the ellipsization status for this pane; this is used later to
+        // decide whether a tooltip should be shown or not for this pane
         // (if we have wxSTB_SHOW_TIPS)
         SetEllipsizedFlag(i, text != GetStatusText(i));
     }
         // (if we have wxSTB_SHOW_TIPS)
         SetEllipsizedFlag(i, text != GetStatusText(i));
     }
@@ -282,7 +264,7 @@ void wxStatusBarGeneric::DrawFieldText(wxDC& dc, const wxRect& rect, int i, int
 
     // draw the text
     dc.DrawText(text, xpos, ypos);
 
     // draw the text
     dc.DrawText(text, xpos, ypos);
-    
+
     if (ellmode == (wxEllipsizeMode)-1)
         dc.DestroyClippingRegion();
 }
     if (ellmode == (wxEllipsizeMode)-1)
         dc.DestroyClippingRegion();
 }
@@ -341,7 +323,7 @@ void wxStatusBarGeneric::DrawField(wxDC& dc, int i, int textHeight)
 bool wxStatusBarGeneric::GetFieldRect(int n, wxRect& rect) const
 {
     wxCHECK_MSG( (n >= 0) && ((size_t)n < m_panes.GetCount()), false,
 bool wxStatusBarGeneric::GetFieldRect(int n, wxRect& rect) const
 {
     wxCHECK_MSG( (n >= 0) && ((size_t)n < m_panes.GetCount()), false,
-                 _T("invalid status bar field index") );
+                 wxT("invalid status bar field index") );
 
     if (m_widthsAbs.IsEmpty())
         return false;
 
     if (m_widthsAbs.IsEmpty())
         return false;
@@ -365,7 +347,7 @@ int wxStatusBarGeneric::GetFieldFromPoint(const wxPoint& pt) const
 
     // NOTE: we explicitely don't take in count the borders since they are only
     //       useful when rendering the status text, not for hit-test computations
 
     // NOTE: we explicitely don't take in count the borders since they are only
     //       useful when rendering the status text, not for hit-test computations
-    
+
     if (pt.y <= 0 || pt.y >= m_lastClientHeight)
         return wxNOT_FOUND;
 
     if (pt.y <= 0 || pt.y >= m_lastClientHeight)
         return wxNOT_FOUND;
 
@@ -374,7 +356,7 @@ int wxStatusBarGeneric::GetFieldFromPoint(const wxPoint& pt) const
     {
         if (pt.x > x && pt.x < x+m_widthsAbs[i])
             return i;
     {
         if (pt.x > x && pt.x < x+m_widthsAbs[i])
             return i;
-        
+
         x += m_widthsAbs[i];
     }
 
         x += m_widthsAbs[i];
     }