#include "wx/wx.h"
#endif
-#if !wxUSE_SASH
- #error "Thisfile requires wxUSE_SASH to be defined."
-#endif // wxUSE_SASH
+#if wxUSE_SASH
#include <math.h>
#include <stdlib.h>
#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()
{
void wxSashWindow::OnMouseEvent(wxMouseEvent& event)
{
- long x, y;
- event.Position(&x, &y);
+ wxCoord x, y;
+ event.GetPosition(&x, &y);
wxSashEdgePosition sashHit = SashHitTest(x, y);
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
wxPen lightShadowPen(m_lightShadowColour, 1, wxSOLID);
wxPen hilightPen(m_hilightColour, 1, wxSOLID);
- if ( GetWindowStyleFlag() & wxSP_3D )
+ if ( GetWindowStyleFlag() & wxSW_3D )
{
dc.SetPen(mediumShadowPen);
dc.DrawLine(0, 0, w-1, 0);
dc.DrawLine(w-2, 1, w-2, h-2); // Right hand side
dc.DrawLine(1, h-2, w-1, h-2); // Bottom
}
- else if ( GetWindowStyleFlag() & wxSP_BORDER )
+ else if ( GetWindowStyleFlag() & wxSW_BORDER )
{
dc.SetBrush(*wxTRANSPARENT_BRUSH);
dc.SetPen(*wxBLACK_PEN);
m_sashes[edge].m_margin = 0;
}
+#endif // wxUSE_SASH