1. added flags to splitter drawing functions and replaced

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
This commit is contained in:
Vadim Zeitlin
2003-08-01 13:38:43 +00:00
parent 4f6e1dac12
commit af99040c70
8 changed files with 254 additions and 82 deletions

View 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();

View 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;