From 52c14774b3309c1f6baddbcf92df1eb86a322d92 Mon Sep 17 00:00:00 2001
From: Vadim Zeitlin <vadim@wxwidgets.org>
Date: Tue, 22 Jul 2003 22:12:32 +0000
Subject: [PATCH] restore some of the styles; added support for splitters
 without border/sash to generic renderer

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@22245 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
---
 docs/latex/wx/splitter.tex |  7 +++---
 include/wx/splitter.h      | 10 ++++-----
 src/generic/renderg.cpp    | 44 ++++++++++++++++++++++++--------------
 3 files changed, 36 insertions(+), 25 deletions(-)

diff --git a/docs/latex/wx/splitter.tex b/docs/latex/wx/splitter.tex
index d9b0f4b16a..a76b73188b 100644
--- a/docs/latex/wx/splitter.tex
+++ b/docs/latex/wx/splitter.tex
@@ -15,10 +15,9 @@ look more like the native control under MacOS X.
 \begin{twocollist}\itemsep=0pt
 \twocolitem{\windowstyle{wxSP\_3D}}{Draws a 3D effect border and sash.}
 \twocolitem{\windowstyle{wxSP\_3DSASH}}{Draws a 3D effect sash.}
-\twocolitem{\windowstyle{wxSP\_3DBORDER}}{Draws a 3D effect border.}
-\twocolitem{\windowstyle{wxSP\_FULLSASH}}{Draws the ends of the sash (so the window can be used without a border).}
-\twocolitem{\windowstyle{wxSP\_BORDER}}{Draws a thin black border around the window.}
-\twocolitem{\windowstyle{wxSP\_NOBORDER}}{No border, and a black sash.}
+\twocolitem{\windowstyle{wxSP\_3DBORDER}}{Synonym for wxSP\_BORDER.}
+\twocolitem{\windowstyle{wxSP\_BORDER}}{Draws a standard border.}
+\twocolitem{\windowstyle{wxSP\_NOBORDER}}{No border (default).}
 \twocolitem{\windowstyle{wxSP\_PERMIT\_UNSPLIT}}{Always allow to
 unsplit, even with the minimum pane size other than zero.}
 \twocolitem{\windowstyle{wxSP\_LIVE\_UPDATE}}{Don't draw XOR line but resize the child windows immediately.}
diff --git a/include/wx/splitter.h b/include/wx/splitter.h
index 82a2b79878..c087846a7a 100644
--- a/include/wx/splitter.h
+++ b/include/wx/splitter.h
@@ -7,18 +7,18 @@
 // wxSplitterWindow flags
 // ----------------------------------------------------------------------------
 
+#define wxSP_NOBORDER         0x0000
 #define wxSP_NOSASH           0x0010
 #define wxSP_PERMIT_UNSPLIT   0x0040
 #define wxSP_LIVE_UPDATE      0x0080
+#define wxSP_3DSASH           0x0100
+#define wxSP_3DBORDER         0x0200
+#define wxSP_BORDER           wxSP_3DBORDER
+#define wxSP_3D               (wxSP_3DBORDER | wxSP_3DSASH)
 
 // obsolete styles, don't do anything
-#define wxSP_BORDER           0
-#define wxSP_NOBORDER         0
 #define wxSP_SASH_AQUA        0
-#define wxSP_3DSASH           0
-#define wxSP_3DBORDER         0
 #define wxSP_FULLSASH         0
-#define wxSP_3D               (wxSP_3DBORDER | wxSP_3DSASH)
 
 BEGIN_DECLARE_EVENT_TYPES()
     DECLARE_EVENT_TYPE(wxEVT_COMMAND_SPLITTER_SASH_POS_CHANGED, 850)
diff --git a/src/generic/renderg.cpp b/src/generic/renderg.cpp
index 52ca205837..7f121bef42 100644
--- a/src/generic/renderg.cpp
+++ b/src/generic/renderg.cpp
@@ -32,6 +32,7 @@
 #include "wx/dc.h"
 
 #include "wx/settings.h"
+#include "wx/splitter.h"
 
 #include "wx/renderer.h"
 
@@ -205,29 +206,32 @@ wxRendererGeneric::DrawTreeItemButton(wxWindow * WXUNUSED(win),
 // ----------------------------------------------------------------------------
 
 wxPoint
-wxRendererGeneric::GetSplitterSashAndBorder(const wxWindow * WXUNUSED(win))
+wxRendererGeneric::GetSplitterSashAndBorder(const wxWindow *win)
 {
     // see below
-    return wxPoint(7, 2);
+    return win->HasFlag(wxSP_3D) ? wxPoint(7, 2) : wxPoint(3, 0);
 }
 
 void
-wxRendererGeneric::DrawSplitterBorder(wxWindow * WXUNUSED(win),
+wxRendererGeneric::DrawSplitterBorder(wxWindow *win,
                                       wxDC& dc,
                                       const wxRect& rectOrig)
 {
-    wxRect rect = rectOrig;
-    DrawShadedRect(dc, &rect, m_penDarkGrey, m_penHighlight);
-    DrawShadedRect(dc, &rect, m_penBlack, m_penLightGrey);
+    if ( win->HasFlag(wxSP_3D) )
+    {
+        wxRect rect = rectOrig;
+        DrawShadedRect(dc, &rect, m_penDarkGrey, m_penHighlight);
+        DrawShadedRect(dc, &rect, m_penBlack, m_penLightGrey);
+    }
 }
 
 void
-wxRendererGeneric::DrawSplitterSash(wxWindow * WXUNUSED(win),
+wxRendererGeneric::DrawSplitterSash(wxWindow *win,
                                     wxDC& dc,
                                     const wxSize& size,
                                     wxCoord position)
 {
-    // we draw a Win32-like sash here:
+    // we draw a Win32-like grey sash with possible 3D border here:
     //
     //   ---- this is position
     //  /
@@ -242,24 +246,32 @@ wxRendererGeneric::DrawSplitterSash(wxWindow * WXUNUSED(win),
     // GWGGGDB  and lower letters are our border (already drawn)
     // GWGGGDB
     // wWGGGDd
+    //
+    // only the middle 3 columns are drawn unless wxSP_3D is specified
 
     const wxCoord h = size.y;
 
     // from left to right
-    dc.SetPen(m_penLightGrey);
-    dc.DrawLine(position, 1, position, h - 1);
+    if ( win->HasFlag(wxSP_3D) )
+    {
+        dc.SetPen(m_penLightGrey);
+        dc.DrawLine(position, 1, position, h - 1);
 
-    dc.SetPen(m_penHighlight);
-    dc.DrawLine(position + 1, 0, position + 1, h);
+        dc.SetPen(m_penHighlight);
+        dc.DrawLine(position + 1, 0, position + 1, h);
+    }
 
     dc.SetPen(*wxTRANSPARENT_PEN);
     dc.SetBrush(wxBrush(wxSystemSettings::GetColour(wxSYS_COLOUR_3DFACE)));
     dc.DrawRectangle(position + 2, 0, 3, h);
 
-    dc.SetPen(m_penDarkGrey);
-    dc.DrawLine(position + 5, 0, position + 5, h);
+    if ( win->HasFlag(wxSP_3D) )
+    {
+        dc.SetPen(m_penDarkGrey);
+        dc.DrawLine(position + 5, 0, position + 5, h);
 
-    dc.SetPen(m_penBlack);
-    dc.DrawLine(position + 6, 1, position + 6, h - 1);
+        dc.SetPen(m_penBlack);
+        dc.DrawLine(position + 6, 1, position + 6, h - 1);
+    }
 }
 
-- 
2.50.0

