virtualized splitter drawing; removed/deprecated some styles and moved others from wx/defs.h; eliminated flicker

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@22218 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2003-07-21 23:12:17 +00:00
parent f65a69e9a0
commit b3208e1158
8 changed files with 310 additions and 343 deletions

View File

@@ -1237,20 +1237,6 @@ enum wxBorder
#define wxSP_ARROW_KEYS 0x1000
#define wxSP_WRAP 0x2000
/*
* wxSplitterWindow flags
*/
#define wxSP_NOBORDER 0x0000
#define wxSP_NOSASH 0x0010
#define wxSP_BORDER 0x0020
#define wxSP_PERMIT_UNSPLIT 0x0040
#define wxSP_LIVE_UPDATE 0x0080
#define wxSP_3DSASH 0x0100
#define wxSP_3DBORDER 0x0200
#define wxSP_FULLSASH 0x0400
#define wxSP_3D (wxSP_3DBORDER | wxSP_3DSASH)
#define wxSP_SASH_AQUA 0x0800
/*
* wxNotebook flags
*/

View File

@@ -133,16 +133,16 @@ public:
bool IsSplit() const { return (m_windowTwo != NULL); }
// Sets the sash size
void SetSashSize(int width) { m_sashSize = width; }
void SetSashSize(int WXUNUSED(width)) { }
// Sets the border size
void SetBorderSize(int width) { m_borderSize = width; }
void SetBorderSize(int WXUNUSED(width)) { }
// Gets the sash size
int GetSashSize() const { return m_sashSize; }
int GetSashSize() const;
// Gets the border size
int GetBorderSize() const { return m_borderSize; }
int GetBorderSize() const;
// Set the sash position
void SetSashPosition(int position, bool redraw = TRUE);
@@ -192,9 +192,6 @@ public:
// In live mode, resize child windows in idle time
void OnInternalIdle();
// Draws borders
virtual void DrawBorders(wxDC& dc);
// Draws the sash
virtual void DrawSash(wxDC& dc);
@@ -202,14 +199,11 @@ public:
virtual void DrawSashTracker(int x, int y);
// Tests for x, y over sash
virtual bool SashHitTest(int x, int y, int tolerance = 2);
virtual bool SashHitTest(int x, int y, int tolerance = 5);
// Resizes subwindows
virtual void SizeWindows();
// Initialize colours
void InitColours();
void SetNeedUpdating(bool needUpdating) { m_needUpdating = needUpdating; }
bool GetNeedUpdating() const { return m_needUpdating ; }
@@ -262,8 +256,6 @@ protected:
int m_dragMode;
int m_oldX;
int m_oldY;
int m_borderSize;
int m_sashSize; // Sash width or height
int m_sashPosition; // Number of pixels from left or top
int m_requestedSashPosition;
int m_sashPositionCurrent; // while dragging
@@ -272,13 +264,7 @@ protected:
int m_minimumPaneSize;
wxCursor m_sashCursorWE;
wxCursor m_sashCursorNS;
wxPen* m_sashTrackerPen;
wxPen* m_lightShadowPen;
wxPen* m_mediumShadowPen;
wxPen* m_darkShadowPen;
wxPen* m_hilightPen;
wxBrush* m_faceBrush;
wxPen* m_facePen;
wxPen *m_sashTrackerPen;
private:
WX_DECLARE_CONTROL_CONTAINER();

View File

@@ -76,6 +76,26 @@ public:
const wxRect& rect,
int flags = 0) = 0;
// draw the border for sash window: this border must be such that the sash
// drawn by DrawSash() blends into it well
virtual void DrawSplitterBorder(wxWindow *win,
wxDC& dc,
const wxRect& rect) = 0;
// draw a (vertical) sash
virtual void DrawSplitterSash(wxWindow *win,
wxDC& dc,
const wxSize& size,
wxCoord position) = 0;
// geometry functions
// ------------------
// 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;
// pseudo constructors
// -------------------
@@ -106,12 +126,28 @@ public:
const wxRect& rect,
int flags = 0)
{ m_rendererNative.DrawHeaderButton(win, dc, rect, flags); }
virtual void DrawTreeItemButton(wxWindow *win,
wxDC& dc,
const wxRect& rect,
int flags = 0)
{ m_rendererNative.DrawTreeItemButton(win, dc, rect, flags); }
virtual void DrawSplitterBorder(wxWindow *win,
wxDC& dc,
const wxRect& rect)
{ m_rendererNative.DrawSplitterBorder(win, dc, rect); }
virtual void DrawSplitterSash(wxWindow *win,
wxDC& dc,
const wxSize& size,
wxCoord position)
{ m_rendererNative.DrawSplitterSash(win, dc, size, position); }
virtual wxPoint GetSplitterSashAndBorder(const wxWindow *win)
{ return m_rendererNative.GetSplitterSashAndBorder(win); }
protected:
wxRendererNative& m_rendererNative;
};

View File

@@ -3,6 +3,23 @@
#include "wx/event.h"
// ----------------------------------------------------------------------------
// wxSplitterWindow flags
// ----------------------------------------------------------------------------
#define wxSP_NOSASH 0x0010
#define wxSP_PERMIT_UNSPLIT 0x0040
#define wxSP_LIVE_UPDATE 0x0080
// 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)
DECLARE_EVENT_TYPE(wxEVT_COMMAND_SPLITTER_SASH_POS_CHANGING, 851)