projects
/
wxWidgets.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merged some STC fixes over to the main branch
[wxWidgets.git]
/
src
/
generic
/
sashwin.cpp
diff --git
a/src/generic/sashwin.cpp
b/src/generic/sashwin.cpp
index 6daf05f134c496edc5df66f533b6251ce7799bbb..f567e1113d4a3f6947cb5ce2d607d4ab5acf9e5e 100644
(file)
--- a/
src/generic/sashwin.cpp
+++ b/
src/generic/sashwin.cpp
@@
-45,28
+45,19
@@
BEGIN_EVENT_TABLE(wxSashWindow, wxWindow)
EVT_MOUSE_EVENTS(wxSashWindow::OnMouseEvent)
END_EVENT_TABLE()
EVT_MOUSE_EVENTS(wxSashWindow::OnMouseEvent)
END_EVENT_TABLE()
-wxSashWindow::wxSashWindow()
+bool wxSashWindow::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos,
+ const wxSize& size, long style, const wxString& name)
{
{
- m_draggingEdge = wxSASH_NONE;
- m_dragMode = wxSASH_DRAG_NONE;
- m_oldX = 0;
- m_oldY = 0;
- m_firstX = 0;
- m_firstY = 0;
- m_borderSize = 3 ;
- m_extraBorderSize = 0;
- m_sashCursorWE = NULL;
- m_sashCursorNS = NULL;
+ return wxWindow::Create(parent, id, pos, size, style, name);
+}
- m_minimumPaneSizeX = 0;
- m_minimumPaneSizeY = 0;
-
m_maximumPaneSizeX = 10000
;
-
m_maximumPaneSizeY = 10000
;
+wxSashWindow::~wxSashWindow()
+{
+
delete m_sashCursorWE
;
+
delete m_sashCursorNS
;
}
}
-wxSashWindow::wxSashWindow(wxWindow *parent, wxWindowID id, const wxPoint& pos,
- const wxSize& size, long style, const wxString& name)
- :wxWindow(parent, id, pos, size, style, name)
+void wxSashWindow::Init()
{
m_draggingEdge = wxSASH_NONE;
m_dragMode = wxSASH_DRAG_NONE;
{
m_draggingEdge = wxSASH_NONE;
m_dragMode = wxSASH_DRAG_NONE;
@@
-82,17
+73,12
@@
wxSashWindow::wxSashWindow(wxWindow *parent, wxWindowID id, const wxPoint& pos,
m_maximumPaneSizeY = 10000;
m_sashCursorWE = new wxCursor(wxCURSOR_SIZEWE);
m_sashCursorNS = new wxCursor(wxCURSOR_SIZENS);
m_maximumPaneSizeY = 10000;
m_sashCursorWE = new wxCursor(wxCURSOR_SIZEWE);
m_sashCursorNS = new wxCursor(wxCURSOR_SIZENS);
+ m_mouseCaptured = FALSE;
// Eventually, we'll respond to colour change messages
InitColours();
}
// Eventually, we'll respond to colour change messages
InitColours();
}
-wxSashWindow::~wxSashWindow()
-{
- delete m_sashCursorWE;
- delete m_sashCursorNS;
-}
-
void wxSashWindow::OnPaint(wxPaintEvent& WXUNUSED(event))
{
wxPaintDC dc(this);
void wxSashWindow::OnPaint(wxPaintEvent& WXUNUSED(event))
{
wxPaintDC dc(this);
@@
-111,8
+97,9
@@
void wxSashWindow::OnMouseEvent(wxMouseEvent& event)
wxSashEdgePosition sashHit = SashHitTest(x, y);
// reset the cursor
wxSashEdgePosition sashHit = SashHitTest(x, y);
// reset the cursor
-#ifdef __WXMOTIF__
- SetCursor(* wxSTANDARD_CURSOR);
+#if defined(__WXMOTIF__) || defined(__WXGTK__)
+ // Not necessary and in fact inhibits proper cursor setting (JACS 8/2000)
+ //SetCursor(* wxSTANDARD_CURSOR);
#endif
#ifdef __WXMSW__
SetCursor(wxNullCursor);
#endif
#ifdef __WXMSW__
SetCursor(wxNullCursor);
@@
-121,6
+108,7
@@
void wxSashWindow::OnMouseEvent(wxMouseEvent& event)
if (event.LeftDown())
{
CaptureMouse();
if (event.LeftDown())
{
CaptureMouse();
+ m_mouseCaptured = TRUE;
if ( sashHit != wxSASH_NONE )
{
if ( sashHit != wxSASH_NONE )
{
@@
-159,7
+147,10
@@
void wxSashWindow::OnMouseEvent(wxMouseEvent& event)
else if ( event.LeftUp() && m_dragMode == wxSASH_DRAG_LEFT_DOWN )
{
// Wasn't a proper drag
else if ( event.LeftUp() && m_dragMode == wxSASH_DRAG_LEFT_DOWN )
{
// Wasn't a proper drag
- ReleaseMouse();
+ if (m_mouseCaptured)
+ ReleaseMouse();
+ m_mouseCaptured = FALSE;
+
wxScreenDC::EndDrawingOnTop();
m_dragMode = wxSASH_DRAG_NONE;
m_draggingEdge = wxSASH_NONE;
wxScreenDC::EndDrawingOnTop();
m_dragMode = wxSASH_DRAG_NONE;
m_draggingEdge = wxSASH_NONE;
@@
-168,7
+159,10
@@
void wxSashWindow::OnMouseEvent(wxMouseEvent& event)
{
// We can stop dragging now and see what we've got.
m_dragMode = wxSASH_DRAG_NONE;
{
// We can stop dragging now and see what we've got.
m_dragMode = wxSASH_DRAG_NONE;
- ReleaseMouse();
+ if (m_mouseCaptured)
+ ReleaseMouse();
+ m_mouseCaptured = FALSE;
+
// Erase old tracker
DrawSashTracker(m_draggingEdge, m_oldX, m_oldY);
// Erase old tracker
DrawSashTracker(m_draggingEdge, m_oldX, m_oldY);
@@
-288,7
+282,9
@@
void wxSashWindow::OnMouseEvent(wxMouseEvent& event)
}
else if ( event.LeftUp() )
{
}
else if ( event.LeftUp() )
{
- ReleaseMouse();
+ if (m_mouseCaptured)
+ ReleaseMouse();
+ m_mouseCaptured = FALSE;
}
else if (event.Moving() && !event.Dragging())
{
}
else if (event.Moving() && !event.Dragging())
{
@@
-415,7
+411,7
@@
void wxSashWindow::DrawBorders(wxDC& dc)
wxPen lightShadowPen(m_lightShadowColour, 1, wxSOLID);
wxPen hilightPen(m_hilightColour, 1, wxSOLID);
wxPen lightShadowPen(m_lightShadowColour, 1, wxSOLID);
wxPen hilightPen(m_hilightColour, 1, wxSOLID);
- if ( GetWindowStyleFlag() & wxSW_3D )
+ if ( GetWindowStyleFlag() & wxSW_3D
BORDER
)
{
dc.SetPen(mediumShadowPen);
dc.DrawLine(0, 0, w-1, 0);
{
dc.SetPen(mediumShadowPen);
dc.DrawLine(0, 0, w-1, 0);
@@
-480,7
+476,7
@@
void wxSashWindow::DrawSash(wxSashEdgePosition edge, wxDC& dc)
dc.SetBrush(faceBrush);
dc.DrawRectangle(sashPosition, 0, GetEdgeMargin(edge), h);
dc.SetBrush(faceBrush);
dc.DrawRectangle(sashPosition, 0, GetEdgeMargin(edge), h);
- if (GetWindowStyleFlag() & wxSW_3D)
+ if (GetWindowStyleFlag() & wxSW_3D
SASH
)
{
if (edge == wxSASH_LEFT)
{
{
if (edge == wxSASH_LEFT)
{
@@
-491,9
+487,9
@@
void wxSashWindow::DrawSash(wxSashEdgePosition edge, wxDC& dc)
}
else
{
}
else
{
- // Draw a
light grey
line on the right to indicate that the
+ // Draw a
highlight
line on the right to indicate that the
// sash is raised
// sash is raised
- dc.SetPen(
lightShadow
Pen);
+ dc.SetPen(
hilight
Pen);
dc.DrawLine(w - GetEdgeMargin(edge), 0, w - GetEdgeMargin(edge), h);
}
}
dc.DrawLine(w - GetEdgeMargin(edge), 0, w - GetEdgeMargin(edge), h);
}
}
@@
-510,13
+506,13
@@
void wxSashWindow::DrawSash(wxSashEdgePosition edge, wxDC& dc)
dc.SetBrush(faceBrush);
dc.DrawRectangle(0, sashPosition, w, GetEdgeMargin(edge));
dc.SetBrush(faceBrush);
dc.DrawRectangle(0, sashPosition, w, GetEdgeMargin(edge));
- if (GetWindowStyleFlag() & wxSW_3D)
+ if (GetWindowStyleFlag() & wxSW_3D
SASH
)
{
if (edge == wxSASH_BOTTOM)
{
{
if (edge == wxSASH_BOTTOM)
{
- // Draw a
light grey
line on the bottom to indicate that the
+ // Draw a
highlight
line on the bottom to indicate that the
// sash is raised
// sash is raised
- dc.SetPen(
lightShadow
Pen);
+ dc.SetPen(
hilight
Pen);
dc.DrawLine(0, h - GetEdgeMargin(edge), w, h - GetEdgeMargin(edge));
}
else
dc.DrawLine(0, h - GetEdgeMargin(edge), w, h - GetEdgeMargin(edge));
}
else
@@
-660,7
+656,7
@@
void wxSashWindow::SizeWindows()
void wxSashWindow::InitColours()
{
// Shadow colours
void wxSashWindow::InitColours()
{
// Shadow colours
-#if
defined(__WIN95__)
+#if
ndef __WIN16__
m_faceColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE);
m_mediumShadowColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DSHADOW);
m_darkShadowColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DDKSHADOW);
m_faceColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE);
m_mediumShadowColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DSHADOW);
m_darkShadowColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DDKSHADOW);