X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a1b82138efe9aacda4e0ad7ce4b1551d624524c4..4bd87101b398ea89795bae4012bbb03866b7e0f5:/src/generic/sashwin.cpp diff --git a/src/generic/sashwin.cpp b/src/generic/sashwin.cpp index 9b9b7a1156..a443cc9f07 100644 --- a/src/generic/sashwin.cpp +++ b/src/generic/sashwin.cpp @@ -26,9 +26,7 @@ #include "wx/wx.h" #endif -#if !wxUSE_SASH - #error "Thisfile requires wxUSE_SASH to be defined." -#endif // wxUSE_SASH +#if wxUSE_SASH #include #include @@ -38,7 +36,6 @@ #include "wx/sashwin.h" #include "wx/laywin.h" -#if !USE_SHARED_LIBRARY IMPLEMENT_DYNAMIC_CLASS(wxSashWindow, wxWindow) IMPLEMENT_DYNAMIC_CLASS(wxSashEvent, wxCommandEvent) @@ -47,7 +44,6 @@ BEGIN_EVENT_TABLE(wxSashWindow, wxWindow) EVT_SIZE(wxSashWindow::OnSize) EVT_MOUSE_EVENTS(wxSashWindow::OnMouseEvent) END_EVENT_TABLE() -#endif wxSashWindow::wxSashWindow() { @@ -109,8 +105,8 @@ void wxSashWindow::OnPaint(wxPaintEvent& WXUNUSED(event)) void wxSashWindow::OnMouseEvent(wxMouseEvent& event) { - long x, y; - event.Position(&x, &y); + wxCoord x, y; + event.GetPosition(&x, &y); wxSashEdgePosition sashHit = SashHitTest(x, y); @@ -124,10 +120,10 @@ void wxSashWindow::OnMouseEvent(wxMouseEvent& event) 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 @@ -149,6 +145,15 @@ void wxSashWindow::OnMouseEvent(wxMouseEvent& event) 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 ) @@ -281,6 +286,10 @@ void wxSashWindow::OnMouseEvent(wxMouseEvent& event) event.SetDragRect(dragRect); GetEventHandler()->ProcessEvent(event); } + else if ( event.LeftUp() ) + { + ReleaseMouse(); + } else if (event.Moving() && !event.Dragging()) { // Just change the cursor if required @@ -402,7 +411,7 @@ void wxSashWindow::DrawBorders(wxDC& dc) 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); @@ -421,7 +430,7 @@ void wxSashWindow::DrawBorders(wxDC& dc) 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); @@ -471,16 +480,16 @@ void wxSashWindow::DrawSash(wxSashEdgePosition edge, wxDC& dc) { 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); } } @@ -501,17 +510,17 @@ void wxSashWindow::DrawSash(wxSashEdgePosition edge, wxDC& dc) { 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)); } } } @@ -671,3 +680,4 @@ void wxSashWindow::SetSashVisible(wxSashEdgePosition edge, bool sash) m_sashes[edge].m_margin = 0; } +#endif // wxUSE_SASH