From f33cef9fec16abad12ef95f293776d3926960ad3 Mon Sep 17 00:00:00 2001
From: Vadim Zeitlin <vadim@wxwidgets.org>
Date: Fri, 21 Jan 2005 15:32:07 +0000
Subject: [PATCH] added DrawComboBoxDropButton()

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@31545 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
---
 docs/latex/wx/renderer.tex | 10 ++++++++++
 include/wx/renderer.h      | 14 ++++++++++++++
 src/generic/renderg.cpp    | 30 ++++++++++++++++++++++++++++++
 3 files changed, 54 insertions(+)

diff --git a/docs/latex/wx/renderer.tex b/docs/latex/wx/renderer.tex
index 26f21944ce..221f659425 100644
--- a/docs/latex/wx/renderer.tex
+++ b/docs/latex/wx/renderer.tex
@@ -91,6 +91,16 @@ No base class
 Virtual destructor as for any base class.
 
 
+\membersection{wxRendererGeneric::DrawComboBoxDropButton}
+
+\func{void}{DrawComboBoxDropButton}{\param{wxWindow *}{win}, \param{wxDC\& }{dc}, \param{const wxRect\& }{rect}, \param{int }{flags}}
+
+Draw a button like the one used by \helpref{wxComboBox}{wxcombobox} to show a
+drop down window. The usual appearance is a downwards pointing arrow.
+
+\arg{flags} may have the \texttt{wxCONTROL\_PRESSED} bit set.
+
+
 \membersection{wxRendererNative::DrawHeaderButton}\label{wxrenderernativedrawheaderbutton}
 
 \func{void}{DrawHeaderButton}{\param{wxWindow* }{win}, \param{wxDC\& }{dc}, \param{const wxRect\& }{rect}, \param{int }{flags = 0}}
diff --git a/include/wx/renderer.h b/include/wx/renderer.h
index e450914bd4..f8c8c14d8a 100644
--- a/include/wx/renderer.h
+++ b/include/wx/renderer.h
@@ -154,6 +154,14 @@ public:
                                   wxOrientation orient,
                                   int flags = 0) = 0;
 
+    // draw a combobox dropdown button
+    //
+    // flags may only use wxCONTROL_PRESSED
+    virtual void DrawComboBoxDropButton(wxWindow *win,
+                                        wxDC& dc,
+                                        const wxRect& rect,
+                                        int flags = 0) = 0;
+
 
     // geometry functions
     // ------------------
@@ -245,6 +253,12 @@ public:
         { m_rendererNative.DrawSplitterSash(win, dc, size,
                                             position, orient, flags); }
 
+    virtual void DrawComboBoxDropButton(wxWindow *win,
+                                        wxDC& dc,
+                                        const wxRect& rect,
+                                        int flags = 0)
+        { m_rendererNative.DrawComboBoxDropButton(win, dc, rect, flags); }
+
 
     virtual wxSplitterRenderParams GetSplitterParams(const wxWindow *win)
         { return m_rendererNative.GetSplitterParams(win); }
diff --git a/src/generic/renderg.cpp b/src/generic/renderg.cpp
index 5aa4bc3d47..7675c9de83 100644
--- a/src/generic/renderg.cpp
+++ b/src/generic/renderg.cpp
@@ -68,6 +68,11 @@ public:
                                   wxOrientation orient,
                                   int flags = 0);
 
+    virtual void DrawComboBoxDropButton(wxWindow *win,
+                                        wxDC& dc,
+                                        const wxRect& rect,
+                                        int flags = 0);
+
 
     virtual wxSplitterRenderParams GetSplitterParams(const wxWindow *win);
 
@@ -338,7 +343,32 @@ wxRendererGeneric::DrawSplitterSash(wxWindow *win,
     }
 }
 
+void
+wxRendererGeneric::DrawComboBoxDropButton(wxWindow *win,
+                                          wxDC& dc,
+                                          const wxRect& rect,
+                                          int WXUNUSED(flags))
+{
+    dc.SetBrush(wxBrush(win->GetBackgroundColour()));
+    dc.SetPen(wxPen(win->GetBackgroundColour()));
+    dc.DrawRectangle(0, 0, rect.width, rect.height);
+
+    wxPoint pt[] =
+    {
+        wxPoint(0, 0),
+        wxPoint(rect.width, 0),
+        wxPoint(rect.width/2, rect.height - 2)
+    };
+    dc.SetBrush(wxBrush(win->GetForegroundColour()));
+    dc.SetPen(wxPen(win->GetForegroundColour()));
+    dc.DrawPolygon(WXSIZEOF(pt), pt);
+}
+
+
+// ----------------------------------------------------------------------------
 // A module to allow cleanup of generic renderer.
+// ----------------------------------------------------------------------------
+
 class wxGenericRendererModule: public wxModule
 {
 DECLARE_DYNAMIC_CLASS(wxGenericRendererModule)
-- 
2.50.0

