#include "wx/sashwin.h"
#include "wx/laywin.h"
-#if !USE_SHARED_LIBRARY
IMPLEMENT_DYNAMIC_CLASS(wxSashWindow, wxWindow)
IMPLEMENT_DYNAMIC_CLASS(wxSashEvent, wxCommandEvent)
EVT_SIZE(wxSashWindow::OnSize)
EVT_MOUSE_EVENTS(wxSashWindow::OnMouseEvent)
END_EVENT_TABLE()
-#endif
wxSashWindow::wxSashWindow()
{
if (event.LeftDown())
{
+ CaptureMouse();
+
if ( sashHit != wxSASH_NONE )
{
- CaptureMouse();
-
// Required for X to specify that
// that we wish to draw on top of all windows
// - and we optimise by specifying the area
m_draggingEdge = sashHit;
m_firstX = x;
m_firstY = y;
+
+ if ( (sashHit == wxSASH_LEFT) || (sashHit == wxSASH_RIGHT) )
+ {
+ SetCursor(*m_sashCursorWE);
+ }
+ else
+ {
+ SetCursor(*m_sashCursorNS);
+ }
}
}
else if ( event.LeftUp() && m_dragMode == wxSASH_DRAG_LEFT_DOWN )
event.SetDragRect(dragRect);
GetEventHandler()->ProcessEvent(event);
}
+ else if ( event.LeftUp() )
+ {
+ ReleaseMouse();
+ }
else if (event.Moving() && !event.Dragging())
{
// Just change the cursor if required
{
if (edge == wxSASH_LEFT)
{
- // Draw a black line on the left to indicate that the
+ // Draw a dark grey line on the left to indicate that the
// sash is raised
- dc.SetPen(blackPen);
+ dc.SetPen(mediumShadowPen);
dc.DrawLine(GetEdgeMargin(edge), 0, GetEdgeMargin(edge), h);
}
else
{
- // Draw a white line on the right to indicate that the
+ // Draw a light grey line on the right to indicate that the
// sash is raised
- dc.SetPen(whitePen);
+ dc.SetPen(lightShadowPen);
dc.DrawLine(w - GetEdgeMargin(edge), 0, w - GetEdgeMargin(edge), h);
}
}
{
if (edge == wxSASH_BOTTOM)
{
- // Draw a black line on the bottom to indicate that the
+ // Draw a light grey line on the bottom to indicate that the
// sash is raised
- dc.SetPen(blackPen);
+ dc.SetPen(lightShadowPen);
dc.DrawLine(0, h - GetEdgeMargin(edge), w, h - GetEdgeMargin(edge));
}
else
{
- // Draw a white line on the top to indicate that the
+ // Draw a drak grey line on the top to indicate that the
// sash is raised
- dc.SetPen(whitePen);
- dc.DrawLine(0, GetEdgeMargin(edge), w, GetEdgeMargin(edge));
+ dc.SetPen(mediumShadowPen);
+ dc.DrawLine(1, GetEdgeMargin(edge), w, GetEdgeMargin(edge));
}
}
}