]> git.saurik.com Git - wxWidgets.git/commitdiff
1. added flags to splitter drawing functions and replaced
authorVadim Zeitlin <vadim@wxwidgets.org>
Fri, 1 Aug 2003 13:38:43 +0000 (13:38 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Fri, 1 Aug 2003 13:38:43 +0000 (13:38 +0000)
   GetSplitterBorderAndSash() with GetSplitterParams()
2. added support for "hot tracking" to wxSplitterWindow
3. added GTK2 support for the splitter to GTK renderer

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

include/wx/generic/splitter.h
include/wx/renderer.h
src/generic/renderg.cpp
src/generic/splitter.cpp
src/gtk/renderer.cpp
src/gtk1/renderer.cpp
src/mac/carbon/renderer.cpp
src/mac/renderer.cpp

index 40a07464de48fe15b13060a9c6b6bcc308d095c8..38420cdd652421b00856077f62d6864c31b1d514 100644 (file)
@@ -245,12 +245,18 @@ protected:
     // set the sash position and send an event about it having been changed
     void SetSashPositionAndNotify(int sashPos);
 
+    // callbacks executed when we detect that the mouse has entered or left
+    // the sash
+    virtual void OnEnterSash();
+    virtual void OnLeaveSash();
+
     // set the cursor appropriate for the current split mode
     void SetResizeCursor();
 
+    // redraw the splitter if its "hotness" changed if necessary
+    void RedrawIfHotSensitive(bool isHot);
+
     wxSplitMode m_splitMode;
-    bool        m_permitUnsplitAlways;
-    bool        m_needUpdating; // when in live mode, set this to TRUE to resize children in idle
     wxWindow*   m_windowOne;
     wxWindow*   m_windowTwo;
     int         m_dragMode;
@@ -266,6 +272,11 @@ protected:
     wxCursor    m_sashCursorNS;
     wxPen      *m_sashTrackerPen;
 
+    // when in live mode, set this to TRUE to resize children in idle
+    bool        m_needUpdating:1;
+    bool        m_permitUnsplitAlways:1;
+    bool        m_isHot:1;
+
 private:
     WX_DECLARE_CONTROL_CONTAINER();
 
index 2906de378a045b7c351655d2d883234cf4297871..366583dbded7780737690fb74e69a686f1e8890b 100644 (file)
@@ -62,6 +62,29 @@ enum
     wxCONTROL_DIRTY      = 0x80000000
 };
 
+// ----------------------------------------------------------------------------
+// helper structs
+// ----------------------------------------------------------------------------
+
+// wxSplitterWindow parameters
+struct WXDLLEXPORT wxSplitterRenderParams
+{
+    // the only way to initialize this struct is by using this ctor
+    wxSplitterRenderParams(wxCoord widthSash_, wxCoord border_, bool isSens_)
+        : widthSash(widthSash_), border(border_), isHotSensitive(isSens_)
+        {
+        }
+
+    // the width of the splitter sash
+    const wxCoord widthSash;
+
+    // the width of the border of the splitter window
+    const wxCoord border;
+
+    // true if the splitter changes its appearance when the mouse is over it
+    const bool isHotSensitive;
+};
+
 // ----------------------------------------------------------------------------
 // wxRendererNative: abstracts drawing methods needed by the native controls
 // ----------------------------------------------------------------------------
@@ -90,14 +113,16 @@ public:
     // drawn by DrawSash() blends into it well
     virtual void DrawSplitterBorder(wxWindow *win,
                                     wxDC& dc,
-                                    const wxRect& rect) = 0;
+                                    const wxRect& rect,
+                                    int flags = 0) = 0;
 
     // draw a (vertical) sash
     virtual void DrawSplitterSash(wxWindow *win,
                                   wxDC& dc,
                                   const wxSize& size,
                                   wxCoord position,
-                                  wxOrientation orient) = 0;
+                                  wxOrientation orient,
+                                  int flags = 0) = 0;
 
 
     // geometry functions
@@ -105,7 +130,7 @@ public:
 
     // get the splitter parameters: the x field of the returned point is the
     // sash width and the y field is the border width
-    virtual wxPoint GetSplitterSashAndBorder(const wxWindow *win) = 0;
+    virtual wxSplitterRenderParams GetSplitterParams(const wxWindow *win) = 0;
 
 
     // pseudo constructors
@@ -149,19 +174,21 @@ public:
 
     virtual void DrawSplitterBorder(wxWindow *win,
                                     wxDC& dc,
-                                    const wxRect& rect)
+                                    const wxRect& rect,
+                                    int flags = 0)
         { m_rendererNative.DrawSplitterBorder(win, dc, rect); }
 
     virtual void DrawSplitterSash(wxWindow *win,
                                   wxDC& dc,
                                   const wxSize& size,
                                   wxCoord position,
-                                  wxOrientation orient)
+                                  wxOrientation orient,
+                                  int flags = 0)
         { m_rendererNative.DrawSplitterSash(win, dc, size, position, orient); }
 
 
-    virtual wxPoint GetSplitterSashAndBorder(const wxWindow *win)
-        { return m_rendererNative.GetSplitterSashAndBorder(win); }
+    virtual wxSplitterRenderParams GetSplitterParams(const wxWindow *win)
+        { return m_rendererNative.GetSplitterParams(win); }
 
 protected:
     wxRendererNative& m_rendererNative;
index 15af1286b6e85ef8f59c4c96de952d41dccce287..758e30835bd37dc19c73d4acde885f3ac6375141 100644 (file)
@@ -59,16 +59,18 @@ public:
 
     virtual void DrawSplitterBorder(wxWindow *win,
                                     wxDC& dc,
-                                    const wxRect& rect);
+                                    const wxRect& rect,
+                                    int flags = 0);
 
     virtual void DrawSplitterSash(wxWindow *win,
                                   wxDC& dc,
                                   const wxSize& size,
                                   wxCoord position,
-                                  wxOrientation orient);
+                                  wxOrientation orient,
+                                  int flags = 0);
 
 
-    virtual wxPoint GetSplitterSashAndBorder(const wxWindow *win);
+    virtual wxSplitterRenderParams GetSplitterParams(const wxWindow *win);
 
 
 protected:
@@ -197,17 +199,32 @@ wxRendererGeneric::DrawTreeItemButton(wxWindow * WXUNUSED(win),
 // sash drawing
 // ----------------------------------------------------------------------------
 
-wxPoint
-wxRendererGeneric::GetSplitterSashAndBorder(const wxWindow *win)
+wxSplitterRenderParams
+wxRendererGeneric::GetSplitterParams(const wxWindow *win)
 {
     // see below
-    return win->HasFlag(wxSP_3D) ? wxPoint(7, 2) : wxPoint(3, 0);
+    wxCoord sashWidth,
+            border;
+
+    if ( win->HasFlag(wxSP_3D) )
+    {
+        sashWidth = 7;
+        border = 3;
+    }
+    else // no 3D effect
+    {
+        sashWidth = 2;
+        border = 0;
+    }
+
+    return wxSplitterRenderParams(sashWidth, border, false);
 }
 
 void
 wxRendererGeneric::DrawSplitterBorder(wxWindow *win,
                                       wxDC& dc,
-                                      const wxRect& rectOrig)
+                                      const wxRect& rectOrig,
+                                      int WXUNUSED(falgs))
 {
     if ( win->HasFlag(wxSP_3D) )
     {
@@ -222,7 +239,8 @@ wxRendererGeneric::DrawSplitterSash(wxWindow *win,
                                     wxDC& dcReal,
                                     const wxSize& sizeReal,
                                     wxCoord position,
-                                    wxOrientation orient)
+                                    wxOrientation orient,
+                                    int WXUNUSED(flags))
 {
     // to avoid duplicating the same code for horizontal and vertical sashes,
     // simply mirror the DC instead if needed (i.e. if horz splitter)
index 70fbed666eb3c190e05c50513a34f47839e0b1d1..e4f0ad4b395bf272637ad3a6d9484a881e8d730d 100644 (file)
@@ -109,6 +109,7 @@ void wxSplitterWindow::Init()
     m_sashTrackerPen = new wxPen(*wxBLACK, 2, wxSOLID);
 
     m_needUpdating = FALSE;
+    m_isHot = false;
 }
 
 wxSplitterWindow::~wxSplitterWindow()
@@ -116,12 +117,46 @@ wxSplitterWindow::~wxSplitterWindow()
     delete m_sashTrackerPen;
 }
 
+// ----------------------------------------------------------------------------
+// entering/leaving sash
+// ----------------------------------------------------------------------------
+
+void wxSplitterWindow::RedrawIfHotSensitive(bool isHot)
+{
+    if ( wxRendererNative::Get().GetSplitterParams(this).isHotSensitive )
+    {
+        m_isHot = isHot;
+
+        wxClientDC dc(this);
+        DrawSash(dc);
+    }
+    //else: we don't change our appearance, don't redraw to avoid flicker
+}
+
+void wxSplitterWindow::OnEnterSash()
+{
+    SetResizeCursor();
+
+    RedrawIfHotSensitive(true);
+}
+
+void wxSplitterWindow::OnLeaveSash()
+{
+    SetCursor(*wxSTANDARD_CURSOR);
+
+    RedrawIfHotSensitive(false);
+}
+
 void wxSplitterWindow::SetResizeCursor()
 {
     SetCursor(m_splitMode == wxSPLIT_VERTICAL ? m_sashCursorWE
                                               : m_sashCursorNS);
 }
 
+// ----------------------------------------------------------------------------
+// other event handlers
+// ----------------------------------------------------------------------------
+
 void wxSplitterWindow::OnPaint(wxPaintEvent& WXUNUSED(event))
 {
     wxPaintDC dc(this);
@@ -252,15 +287,10 @@ void wxSplitterWindow::OnMouseEvent(wxMouseEvent& event)
     }  // left up && dragging
     else if ((event.Moving() || event.Leaving() || event.Entering()) && (m_dragMode == wxSPLIT_DRAG_NONE))
     {
-        // Just change the cursor as required
-        if ( !event.Leaving() && SashHitTest(x, y) )
-        {
-            SetResizeCursor();
-        }
+        if ( event.Leaving() || !SashHitTest(x, y) )
+            OnLeaveSash();
         else
-        {
-            SetCursor(* wxSTANDARD_CURSOR);
-        }
+            OnEnterSash();
     }
     else if (event.Dragging() && (m_dragMode == wxSPLIT_DRAG_DRAGGING))
     {
@@ -387,12 +417,12 @@ bool wxSplitterWindow::SashHitTest(int x, int y, int tolerance)
 
 int wxSplitterWindow::GetSashSize() const
 {
-    return wxRendererNative::Get().GetSplitterSashAndBorder(this).x;
+    return wxRendererNative::Get().GetSplitterParams(this).widthSash;
 }
 
 int wxSplitterWindow::GetBorderSize() const
 {
-    return wxRendererNative::Get().GetSplitterSashAndBorder(this).y;
+    return wxRendererNative::Get().GetSplitterParams(this).border;
 }
 
 // Draw the sash
@@ -419,9 +449,9 @@ void wxSplitterWindow::DrawSash(wxDC& dc)
                                 dc,
                                 GetClientSize(),
                                 m_sashPosition,
-                                m_splitMode == wxSPLIT_VERTICAL
-                                    ? wxVERTICAL
-                                    : wxHORIZONTAL
+                                m_splitMode == wxSPLIT_VERTICAL ? wxVERTICAL
+                                                                : wxHORIZONTAL,
+                                m_isHot ? wxCONTROL_CURRENT : 0
                             );
 }
 
index dea620908fc9cf90f7a9062de6e63514fb8113c8..949fe5da1ab740d58d75000a40c508f23984b809 100644 (file)
     #include "wx/settings.h"
 #endif // GTK 2.0
 
+#ifdef __WXGTK20__
+    #define WXUNUSED_IN_GTK1(arg) arg
+#else
+    #define WXUNUSED_IN_GTK1(arg)
+#endif
+
 // ----------------------------------------------------------------------------
 // wxRendererGTK: our wxRendererNative implementation
 // ----------------------------------------------------------------------------
@@ -61,14 +67,16 @@ public:
 
     virtual void DrawSplitterBorder(wxWindow *win,
                                     wxDC& dc,
-                                    const wxRect& rect) ;
+                                    const wxRect& rect,
+                                    int flags = 0);
     virtual void DrawSplitterSash(wxWindow *win,
                                   wxDC& dc,
                                   const wxSize& size,
                                   wxCoord position,
-                                  wxOrientation orient);
+                                  wxOrientation orient,
+                                  int flags = 0);
 
-    virtual wxPoint GetSplitterSashAndBorder(const wxWindow *win);
+    virtual wxSplitterRenderParams GetSplitterParams(const wxWindow *win);
 };
 
 // ============================================================================
@@ -151,24 +159,42 @@ wxRendererGTK::DrawTreeItemButton(wxWindow* WXUNUSED(win),
 // splitter sash drawing
 // ----------------------------------------------------------------------------
 
-// the full sash width (should be even)
-static const wxCoord SASH_SIZE = 10;
+// all this should probably be read from the current theme settings somehow?
+#ifdef __WXGTK20__
+    // the full sash size
+    static const wxCoord SASH_FULL_SIZE = 5;
+#else // GTK+ 1.x
+    // the full sash width (should be even)
+    static const wxCoord SASH_SIZE = 10;
+
+    // margin around the sash
+    static const wxCoord SASH_MARGIN = 5;
 
-// margin around the sash
-static const wxCoord SASH_MARGIN = 5;
+    // the full sash size
+    static const wxCoord SASH_FULL_SIZE = SASH_SIZE + SASH_MARGIN;
+#endif // GTK+ 2.x/1.x
 
-wxPoint
-wxRendererGTK::GetSplitterSashAndBorder(const wxWindow * WXUNUSED(win))
+wxSplitterRenderParams
+wxRendererGTK::GetSplitterParams(const wxWindow * WXUNUSED(win))
 {
-    // we don't draw any border, hence 0 for the second field, but we must
-    // leave some margin around the sash
-    return wxPoint(SASH_SIZE + SASH_MARGIN, 0);
+    // we don't draw any border, hence 0 for the second field
+    return wxSplitterRenderParams
+           (
+               SASH_FULL_SIZE,
+               0,
+#ifdef __WXGTK20__
+               true     // hot sensitive
+#else // GTK+ 1.x
+               false    // not
+#endif // GTK+ 2.x/1.x
+           );
 }
 
 void
 wxRendererGTK::DrawSplitterBorder(wxWindow * WXUNUSED(win),
                                   wxDC& WXUNUSED(dc),
-                                  const wxRect& WXUNUSED(rect))
+                                  const wxRect& WXUNUSED(rect),
+                                  int WXUNUSED(flags))
 {
     // nothing to do
 }
@@ -178,7 +204,8 @@ wxRendererGTK::DrawSplitterSash(wxWindow *win,
                                 wxDC& dc,
                                 const wxSize& size,
                                 wxCoord position,
-                                wxOrientation orient)
+                                wxOrientation orient,
+                                int WXUNUSED_IN_GTK1(flags))
 {
     if ( !win->m_wxwindow->window )
     {
@@ -189,26 +216,43 @@ wxRendererGTK::DrawSplitterSash(wxWindow *win,
     // are we drawing vertical or horizontal splitter?
     const bool isVert = orient == wxVERTICAL;
 
-    // we must erase everything first, otherwise the garbage from the old sash
-    // is left when dragging it
-    //
-    // TODO: is this the right way to draw themed background?
     GdkRectangle rect;
     if ( isVert )
     {
         rect.x = position;
         rect.y = 0;
-        rect.width = SASH_SIZE + SASH_MARGIN;
+        rect.width = SASH_FULL_SIZE;
         rect.height = size.y;
     }
     else // horz
     {
         rect.x = 0;
         rect.y = position;
-        rect.height = SASH_SIZE + SASH_MARGIN;
+        rect.height = SASH_FULL_SIZE;
         rect.width = size.x;
     }
 
+#ifdef __WXGTK20__
+    gtk_paint_handle
+    (
+        win->m_wxwindow->style,
+        GTK_PIZZA(win->m_wxwindow)->bin_window,
+        flags & wxCONTROL_CURRENT ? GTK_STATE_PRELIGHT : GTK_STATE_NORMAL,
+        GTK_SHADOW_NONE,
+        NULL /* no clipping */,
+        win->m_wxwindow,
+        "paned",
+        rect.x,
+        rect.y,
+        rect.width,
+        rect.height,
+        isVert ? GTK_ORIENTATION_VERTICAL : GTK_ORIENTATION_HORIZONTAL
+    );
+#else // GTK+ 1.x
+    // we must erase everything first, otherwise the garbage from the old sash
+    // is left when dragging it
+    //
+    // TODO: is this the right way to draw themed background?
     gtk_paint_flat_box
     (
         win->m_wxwindow->style,
@@ -229,11 +273,7 @@ wxRendererGTK::DrawSplitterSash(wxWindow *win,
     typedef void (*GtkPaintLineFunc)(GtkStyle *, GdkWindow *,
                                                 GtkStateType,
                                                 GdkRectangle *, GtkWidget *,
-#ifdef __WXGTK20__
-                                                const gchar *,
-#else
                                                 gchar *,
-#endif
                                                 gint, gint, gint);
 
     GtkPaintLineFunc func = isVert ? gtk_paint_vline : gtk_paint_hline;
@@ -262,5 +302,6 @@ wxRendererGTK::DrawSplitterSash(wxWindow *win,
         isVert ? size.y - 2*SASH_SIZE : position,
         SASH_SIZE, SASH_SIZE
     );
+#endif // GTK+ 2.x/1.x
 }
 
index dea620908fc9cf90f7a9062de6e63514fb8113c8..949fe5da1ab740d58d75000a40c508f23984b809 100644 (file)
     #include "wx/settings.h"
 #endif // GTK 2.0
 
+#ifdef __WXGTK20__
+    #define WXUNUSED_IN_GTK1(arg) arg
+#else
+    #define WXUNUSED_IN_GTK1(arg)
+#endif
+
 // ----------------------------------------------------------------------------
 // wxRendererGTK: our wxRendererNative implementation
 // ----------------------------------------------------------------------------
@@ -61,14 +67,16 @@ public:
 
     virtual void DrawSplitterBorder(wxWindow *win,
                                     wxDC& dc,
-                                    const wxRect& rect) ;
+                                    const wxRect& rect,
+                                    int flags = 0);
     virtual void DrawSplitterSash(wxWindow *win,
                                   wxDC& dc,
                                   const wxSize& size,
                                   wxCoord position,
-                                  wxOrientation orient);
+                                  wxOrientation orient,
+                                  int flags = 0);
 
-    virtual wxPoint GetSplitterSashAndBorder(const wxWindow *win);
+    virtual wxSplitterRenderParams GetSplitterParams(const wxWindow *win);
 };
 
 // ============================================================================
@@ -151,24 +159,42 @@ wxRendererGTK::DrawTreeItemButton(wxWindow* WXUNUSED(win),
 // splitter sash drawing
 // ----------------------------------------------------------------------------
 
-// the full sash width (should be even)
-static const wxCoord SASH_SIZE = 10;
+// all this should probably be read from the current theme settings somehow?
+#ifdef __WXGTK20__
+    // the full sash size
+    static const wxCoord SASH_FULL_SIZE = 5;
+#else // GTK+ 1.x
+    // the full sash width (should be even)
+    static const wxCoord SASH_SIZE = 10;
+
+    // margin around the sash
+    static const wxCoord SASH_MARGIN = 5;
 
-// margin around the sash
-static const wxCoord SASH_MARGIN = 5;
+    // the full sash size
+    static const wxCoord SASH_FULL_SIZE = SASH_SIZE + SASH_MARGIN;
+#endif // GTK+ 2.x/1.x
 
-wxPoint
-wxRendererGTK::GetSplitterSashAndBorder(const wxWindow * WXUNUSED(win))
+wxSplitterRenderParams
+wxRendererGTK::GetSplitterParams(const wxWindow * WXUNUSED(win))
 {
-    // we don't draw any border, hence 0 for the second field, but we must
-    // leave some margin around the sash
-    return wxPoint(SASH_SIZE + SASH_MARGIN, 0);
+    // we don't draw any border, hence 0 for the second field
+    return wxSplitterRenderParams
+           (
+               SASH_FULL_SIZE,
+               0,
+#ifdef __WXGTK20__
+               true     // hot sensitive
+#else // GTK+ 1.x
+               false    // not
+#endif // GTK+ 2.x/1.x
+           );
 }
 
 void
 wxRendererGTK::DrawSplitterBorder(wxWindow * WXUNUSED(win),
                                   wxDC& WXUNUSED(dc),
-                                  const wxRect& WXUNUSED(rect))
+                                  const wxRect& WXUNUSED(rect),
+                                  int WXUNUSED(flags))
 {
     // nothing to do
 }
@@ -178,7 +204,8 @@ wxRendererGTK::DrawSplitterSash(wxWindow *win,
                                 wxDC& dc,
                                 const wxSize& size,
                                 wxCoord position,
-                                wxOrientation orient)
+                                wxOrientation orient,
+                                int WXUNUSED_IN_GTK1(flags))
 {
     if ( !win->m_wxwindow->window )
     {
@@ -189,26 +216,43 @@ wxRendererGTK::DrawSplitterSash(wxWindow *win,
     // are we drawing vertical or horizontal splitter?
     const bool isVert = orient == wxVERTICAL;
 
-    // we must erase everything first, otherwise the garbage from the old sash
-    // is left when dragging it
-    //
-    // TODO: is this the right way to draw themed background?
     GdkRectangle rect;
     if ( isVert )
     {
         rect.x = position;
         rect.y = 0;
-        rect.width = SASH_SIZE + SASH_MARGIN;
+        rect.width = SASH_FULL_SIZE;
         rect.height = size.y;
     }
     else // horz
     {
         rect.x = 0;
         rect.y = position;
-        rect.height = SASH_SIZE + SASH_MARGIN;
+        rect.height = SASH_FULL_SIZE;
         rect.width = size.x;
     }
 
+#ifdef __WXGTK20__
+    gtk_paint_handle
+    (
+        win->m_wxwindow->style,
+        GTK_PIZZA(win->m_wxwindow)->bin_window,
+        flags & wxCONTROL_CURRENT ? GTK_STATE_PRELIGHT : GTK_STATE_NORMAL,
+        GTK_SHADOW_NONE,
+        NULL /* no clipping */,
+        win->m_wxwindow,
+        "paned",
+        rect.x,
+        rect.y,
+        rect.width,
+        rect.height,
+        isVert ? GTK_ORIENTATION_VERTICAL : GTK_ORIENTATION_HORIZONTAL
+    );
+#else // GTK+ 1.x
+    // we must erase everything first, otherwise the garbage from the old sash
+    // is left when dragging it
+    //
+    // TODO: is this the right way to draw themed background?
     gtk_paint_flat_box
     (
         win->m_wxwindow->style,
@@ -229,11 +273,7 @@ wxRendererGTK::DrawSplitterSash(wxWindow *win,
     typedef void (*GtkPaintLineFunc)(GtkStyle *, GdkWindow *,
                                                 GtkStateType,
                                                 GdkRectangle *, GtkWidget *,
-#ifdef __WXGTK20__
-                                                const gchar *,
-#else
                                                 gchar *,
-#endif
                                                 gint, gint, gint);
 
     GtkPaintLineFunc func = isVert ? gtk_paint_vline : gtk_paint_hline;
@@ -262,5 +302,6 @@ wxRendererGTK::DrawSplitterSash(wxWindow *win,
         isVert ? size.y - 2*SASH_SIZE : position,
         SASH_SIZE, SASH_SIZE
     );
+#endif // GTK+ 2.x/1.x
 }
 
index 075dd59eb09def8f6443bda43c0c27e3e6cc7121..07ae99090a35486e6522d26ba1cc77a80abff22b 100644 (file)
@@ -57,7 +57,8 @@ public:
                                   wxDC& dc,
                                   const wxSize& size,
                                   wxCoord position,
-                                  wxOrientation orient);
+                                  wxOrientation orient,
+                                  int flags = 0);
 
 private:
     // the tree buttons
@@ -200,7 +201,8 @@ wxRendererMac::DrawSplitterSash(wxWindow *win,
                                 wxDC& dc,
                                 const wxSize& size,
                                 wxCoord position,
-                                wxOrientation orient)
+                                wxOrientation orient,
+                                int WXUNUSED(flags))
 {
     // VZ: we have to somehow determine if we're drawing a normal sash or
     //     a brushed metal one as they look quite differently... this is
index 075dd59eb09def8f6443bda43c0c27e3e6cc7121..07ae99090a35486e6522d26ba1cc77a80abff22b 100644 (file)
@@ -57,7 +57,8 @@ public:
                                   wxDC& dc,
                                   const wxSize& size,
                                   wxCoord position,
-                                  wxOrientation orient);
+                                  wxOrientation orient,
+                                  int flags = 0);
 
 private:
     // the tree buttons
@@ -200,7 +201,8 @@ wxRendererMac::DrawSplitterSash(wxWindow *win,
                                 wxDC& dc,
                                 const wxSize& size,
                                 wxCoord position,
-                                wxOrientation orient)
+                                wxOrientation orient,
+                                int WXUNUSED(flags))
 {
     // VZ: we have to somehow determine if we're drawing a normal sash or
     //     a brushed metal one as they look quite differently... this is