]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/renderer.cpp
Compile fix for gcc on MSW
[wxWidgets.git] / src / msw / renderer.cpp
index e63c25ad8de706f76345fea4974aea83aa9b60ef..b820b38bb8ce1ef0d0887a26b51407362ae14612 100644 (file)
@@ -118,14 +118,14 @@ public:
 
     static wxRendererNative& Get();
 
-    virtual void DrawHeaderButton(wxWindow *win,
+    virtual int DrawHeaderButton(wxWindow *win,
                                   wxDC& dc,
                                   const wxRect& rect,
                                   int flags = 0,
                                   wxHeaderSortIconType sortArrow = wxHDR_SORT_ICON_NONE,
                                   wxHeaderButtonParams* params = NULL);
     virtual int GetHeaderButtonHeight(wxWindow *win);
-    
+
     virtual void DrawTreeItemButton(wxWindow *win,
                                     wxDC& dc,
                                     const wxRect& rect,
@@ -154,6 +154,12 @@ public:
                                 const wxRect& rect,
                                 int flags = 0);
 
+    virtual void DrawItemSelectionRect(wxWindow *win,
+                                       wxDC& dc,
+                                       const wxRect& rect,
+                                       int flags = 0 );
+
+
     virtual wxSplitterRenderParams GetSplitterParams(const wxWindow *win);
 private:
     DECLARE_NO_COPY_CLASS(wxRendererXP)
@@ -290,7 +296,7 @@ wxRendererXP::DrawComboBoxDropButton(wxWindow * win,
 
 }
 
-void
+int
 wxRendererXP::DrawHeaderButton(wxWindow *win,
                                wxDC& dc,
                                const wxRect& rect,
@@ -301,8 +307,7 @@ wxRendererXP::DrawHeaderButton(wxWindow *win,
     wxUxThemeHandle hTheme(win, L"HEADER");
     if ( !hTheme )
     {
-        m_rendererNative.DrawHeaderButton(win, dc, rect, flags, sortArrow, params);
-        return;
+        return m_rendererNative.DrawHeaderButton(win, dc, rect, flags, sortArrow, params);
     }
 
     RECT r;
@@ -328,9 +333,9 @@ wxRendererXP::DrawHeaderButton(wxWindow *win,
     // NOTE: Using the theme to draw HP_HEADERSORTARROW doesn't do anything.
     // Why?  If this can be fixed then draw the sort arrows using the theme
     // and then clear those flags before calling DrawHeaderButtonContents.
-    
+
     // Add any extras that are specified in flags and params
-    DrawHeaderButtonContents(win, dc, rect, flags, sortArrow, params);
+    return DrawHeaderButtonContents(win, dc, rect, flags, sortArrow, params);
 }
 
 
@@ -342,10 +347,10 @@ wxRendererXP::GetHeaderButtonHeight(wxWindow *win)
     {
         return m_rendererNative.GetHeaderButtonHeight(win);
     }
-    
+
     HRESULT hr;
     int value = -1;
-    
+
     hr = wxUxThemeEngine::Get()->GetThemeMetric( hTheme,
                                                  NULL,
                                                  HP_HEADERITEM,
@@ -470,6 +475,40 @@ wxRendererXP::DrawPushButton(wxWindow * win,
 
 }
 
+void
+wxRendererXP::DrawItemSelectionRect(wxWindow * WXUNUSED(win),
+                                    wxDC& dc,
+                                    const wxRect& rect,
+                                    int flags)
+{
+    wxBrush brush;
+    if ( flags & wxCONTROL_SELECTED )
+    {
+        if ( flags & wxCONTROL_FOCUSED )
+        {
+            brush = wxBrush(wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHT));
+        }
+        else // !focused
+        {
+            brush = wxBrush(wxSystemSettings::GetColour(wxSYS_COLOUR_BTNSHADOW));
+        }
+    }
+    else // !selected
+    {
+        brush = *wxTRANSPARENT_BRUSH;
+    }
+
+    dc.SetBrush(brush);
+
+    // unlike for wxRendererGeneric, on windows we _never_ want to draw
+    // the outline of the rectangle:
+    dc.SetPen(*wxTRANSPARENT_PEN);
+
+    dc.DrawRectangle( rect );
+}
+
+
+
 // ----------------------------------------------------------------------------
 // splitter drawing
 // ----------------------------------------------------------------------------