]> git.saurik.com Git - wxWidgets.git/commitdiff
Use correct colour for selected items in generic wxDVC.
authorVadim Zeitlin <vadim@wxwidgets.org>
Thu, 15 Oct 2009 16:53:45 +0000 (16:53 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Thu, 15 Oct 2009 16:53:45 +0000 (16:53 +0000)
wxDataViewCustomRenderer::RenderText() taking attributes must use correct
colour for the selected items if no attribute is specified as it can be (and
is) called directly and not only via the compatibility overload.

This fixes the display of the selected items in the dataview sample broken by
recent changes.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62417 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/generic/dataview.h
src/generic/datavgen.cpp

index 27148332da577e260fa8e8befb7f275a3a4048bb..ec81d7e6de9394d4eff868c242dfd352072cec4a 100644 (file)
@@ -134,7 +134,14 @@ public:
                     int xoffset = 0);
 
     // Overload using standard attributes
-    void RenderText( const wxString &text, int xoffset, wxRect cell, wxDC *dc, int state );
+    void RenderText(const wxString& text,
+                    int xoffset,
+                    wxRect cell,
+                    wxDC *dc,
+                    int state)
+    {
+        RenderText(*dc, cell, wxALIGN_NOT, text, NULL, state, xoffset);
+    }
 
 protected:
     DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewCustomRenderer)
index 06a43cfd93bf24aa5cb0a2d0d710888dc4363438..7eccd2768250e4ee1f2644f3365271e42c0625d3 100644 (file)
@@ -704,30 +704,24 @@ wxDataViewCustomRenderer::wxDataViewCustomRenderer( const wxString &varianttype,
 {
 }
 
-void wxDataViewCustomRenderer::RenderText( const wxString &text, int xoffset,
-                                           wxRect cell, wxDC *dc, int state )
-{
-    wxColour col = state & wxDATAVIEW_CELL_SELECTED
-                    ? wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHTTEXT)
-                    : GetOwner()->GetOwner()->GetForegroundColour();
-
-    wxDataViewItemAttr attr;
-    attr.SetColour(col);
-    RenderText(*dc, cell, wxALIGN_NOT, text, &attr, state, xoffset);
-}
-
 void
 wxDataViewCustomRenderer::RenderText(wxDC& dc,
                                      const wxRect& rect,
                                      int align,
                                      const wxString& text,
                                      const wxDataViewItemAttr *attr,
-                                     int WXUNUSED(state),
+                                     int state,
                                      int xoffset)
 {
-    wxDCTextColourChanger changeFg(dc);
+    wxColour col;
     if ( attr && attr->HasColour() )
-        changeFg.Set(attr->GetColour());
+        col = attr->GetColour();
+    else if ( state & wxDATAVIEW_CELL_SELECTED )
+        col = wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHTTEXT);
+    else // use default foreground
+        col = GetOwner()->GetOwner()->GetForegroundColour();
+
+    wxDCTextColourChanger changeFg(dc, col);
 
     wxDCFontChanger changeFont(dc);
     if ( attr && attr->HasFont() )