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
This commit is contained in:
Vadim Zeitlin
2003-07-22 22:12:32 +00:00
parent 4749467786
commit 52c14774b3
3 changed files with 36 additions and 25 deletions

View File

@@ -15,10 +15,9 @@ look more like the native control under MacOS X.
\begin{twocollist}\itemsep=0pt \begin{twocollist}\itemsep=0pt
\twocolitem{\windowstyle{wxSP\_3D}}{Draws a 3D effect border and sash.} \twocolitem{\windowstyle{wxSP\_3D}}{Draws a 3D effect border and sash.}
\twocolitem{\windowstyle{wxSP\_3DSASH}}{Draws a 3D effect sash.} \twocolitem{\windowstyle{wxSP\_3DSASH}}{Draws a 3D effect sash.}
\twocolitem{\windowstyle{wxSP\_3DBORDER}}{Draws a 3D effect border.} \twocolitem{\windowstyle{wxSP\_3DBORDER}}{Synonym for wxSP\_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 standard border.}
\twocolitem{\windowstyle{wxSP\_BORDER}}{Draws a thin black border around the window.} \twocolitem{\windowstyle{wxSP\_NOBORDER}}{No border (default).}
\twocolitem{\windowstyle{wxSP\_NOBORDER}}{No border, and a black sash.}
\twocolitem{\windowstyle{wxSP\_PERMIT\_UNSPLIT}}{Always allow to \twocolitem{\windowstyle{wxSP\_PERMIT\_UNSPLIT}}{Always allow to
unsplit, even with the minimum pane size other than zero.} 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.} \twocolitem{\windowstyle{wxSP\_LIVE\_UPDATE}}{Don't draw XOR line but resize the child windows immediately.}

View File

@@ -7,18 +7,18 @@
// wxSplitterWindow flags // wxSplitterWindow flags
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
#define wxSP_NOBORDER 0x0000
#define wxSP_NOSASH 0x0010 #define wxSP_NOSASH 0x0010
#define wxSP_PERMIT_UNSPLIT 0x0040 #define wxSP_PERMIT_UNSPLIT 0x0040
#define wxSP_LIVE_UPDATE 0x0080 #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 // obsolete styles, don't do anything
#define wxSP_BORDER 0
#define wxSP_NOBORDER 0
#define wxSP_SASH_AQUA 0 #define wxSP_SASH_AQUA 0
#define wxSP_3DSASH 0
#define wxSP_3DBORDER 0
#define wxSP_FULLSASH 0 #define wxSP_FULLSASH 0
#define wxSP_3D (wxSP_3DBORDER | wxSP_3DSASH)
BEGIN_DECLARE_EVENT_TYPES() BEGIN_DECLARE_EVENT_TYPES()
DECLARE_EVENT_TYPE(wxEVT_COMMAND_SPLITTER_SASH_POS_CHANGED, 850) DECLARE_EVENT_TYPE(wxEVT_COMMAND_SPLITTER_SASH_POS_CHANGED, 850)

View File

@@ -32,6 +32,7 @@
#include "wx/dc.h" #include "wx/dc.h"
#include "wx/settings.h" #include "wx/settings.h"
#include "wx/splitter.h"
#include "wx/renderer.h" #include "wx/renderer.h"
@@ -205,29 +206,32 @@ wxRendererGeneric::DrawTreeItemButton(wxWindow * WXUNUSED(win),
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
wxPoint wxPoint
wxRendererGeneric::GetSplitterSashAndBorder(const wxWindow * WXUNUSED(win)) wxRendererGeneric::GetSplitterSashAndBorder(const wxWindow *win)
{ {
// see below // see below
return wxPoint(7, 2); return win->HasFlag(wxSP_3D) ? wxPoint(7, 2) : wxPoint(3, 0);
} }
void void
wxRendererGeneric::DrawSplitterBorder(wxWindow * WXUNUSED(win), wxRendererGeneric::DrawSplitterBorder(wxWindow *win,
wxDC& dc, wxDC& dc,
const wxRect& rectOrig) const wxRect& rectOrig)
{ {
wxRect rect = rectOrig; if ( win->HasFlag(wxSP_3D) )
DrawShadedRect(dc, &rect, m_penDarkGrey, m_penHighlight); {
DrawShadedRect(dc, &rect, m_penBlack, m_penLightGrey); wxRect rect = rectOrig;
DrawShadedRect(dc, &rect, m_penDarkGrey, m_penHighlight);
DrawShadedRect(dc, &rect, m_penBlack, m_penLightGrey);
}
} }
void void
wxRendererGeneric::DrawSplitterSash(wxWindow * WXUNUSED(win), wxRendererGeneric::DrawSplitterSash(wxWindow *win,
wxDC& dc, wxDC& dc,
const wxSize& size, const wxSize& size,
wxCoord position) wxCoord position)
{ {
// we draw a Win32-like sash here: // we draw a Win32-like grey sash with possible 3D border here:
// //
// ---- this is position // ---- this is position
// / // /
@@ -242,24 +246,32 @@ wxRendererGeneric::DrawSplitterSash(wxWindow * WXUNUSED(win),
// GWGGGDB and lower letters are our border (already drawn) // GWGGGDB and lower letters are our border (already drawn)
// GWGGGDB // GWGGGDB
// wWGGGDd // wWGGGDd
//
// only the middle 3 columns are drawn unless wxSP_3D is specified
const wxCoord h = size.y; const wxCoord h = size.y;
// from left to right // from left to right
dc.SetPen(m_penLightGrey); if ( win->HasFlag(wxSP_3D) )
dc.DrawLine(position, 1, position, h - 1); {
dc.SetPen(m_penLightGrey);
dc.DrawLine(position, 1, position, h - 1);
dc.SetPen(m_penHighlight); dc.SetPen(m_penHighlight);
dc.DrawLine(position + 1, 0, position + 1, h); dc.DrawLine(position + 1, 0, position + 1, h);
}
dc.SetPen(*wxTRANSPARENT_PEN); dc.SetPen(*wxTRANSPARENT_PEN);
dc.SetBrush(wxBrush(wxSystemSettings::GetColour(wxSYS_COLOUR_3DFACE))); dc.SetBrush(wxBrush(wxSystemSettings::GetColour(wxSYS_COLOUR_3DFACE)));
dc.DrawRectangle(position + 2, 0, 3, h); dc.DrawRectangle(position + 2, 0, 3, h);
dc.SetPen(m_penDarkGrey); if ( win->HasFlag(wxSP_3D) )
dc.DrawLine(position + 5, 0, position + 5, h); {
dc.SetPen(m_penDarkGrey);
dc.DrawLine(position + 5, 0, position + 5, h);
dc.SetPen(m_penBlack); dc.SetPen(m_penBlack);
dc.DrawLine(position + 6, 1, position + 6, h - 1); dc.DrawLine(position + 6, 1, position + 6, h - 1);
}
} }