EVT_IDLE(wxSplitterWindow::OnIdle)
EVT_MOUSE_EVENTS(wxSplitterWindow::OnMouseEvent)
+ EVT_SET_CURSOR(wxSplitterWindow::OnSetCursor)
+
EVT_SPLITTER_SASH_POS_CHANGED(-1, wxSplitterWindow::OnSashPosChanged)
// NB: we borrow OnSashPosChanged for purposes of
// EVT_SPLITTER_SASH_POS_CHANGING since default implementation is identical
void wxSplitterWindow::OnMouseEvent(wxMouseEvent& event)
{
- long x = event.GetX();
- long y = event.GetY();
+ wxCoord x = (wxCoord)event.GetX(),
+ y = (wxCoord)event.GetY();
// reset the cursor
#ifdef __WXMOTIF__
m_oldX = x;
m_oldY = y;
+
+ if ( m_splitMode == wxSPLIT_VERTICAL )
+ {
+ SetCursor(*m_sashCursorWE);
+ }
+ else
+ {
+ SetCursor(*m_sashCursorNS);
+ }
return;
}
}
}
}
- if ( m_permitUnsplitAlways
- || m_minimumPaneSize == 0 )
+ if ( m_permitUnsplitAlways || m_minimumPaneSize == 0 )
{
// Deal with possible unsplit scenarios
if ( new_sash_position == 0 )
}
SizeWindows();
+ m_needUpdating = FALSE;
} // left up && dragging
else if (event.Moving() && !event.Dragging())
{
SetCursor(* wxSTANDARD_CURSOR);
}
#endif // __WXGTK__
+
+ m_needUpdating = FALSE;
}
else if (event.Dragging() && (m_dragMode == wxSPLIT_DRAG_DRAGGING))
{
+#ifdef __WXMSW__
+ // Otherwise, the cursor sometimes reverts to the normal cursor
+ // during dragging.
+ if ( m_splitMode == wxSPLIT_VERTICAL )
+ {
+ SetCursor(*m_sashCursorWE);
+ }
+ else
+ {
+ SetCursor(*m_sashCursorNS);
+ }
+#endif
+
// Obtain window size. We are only interested in the dimension the sash
// splits up
int new_sash_position =
// for compatibility, call the virtual function
OnUnsplit(win);
}
+
+void wxSplitterWindow::OnSetCursor(wxSetCursorEvent& event)
+{
+ // this is currently called (and needed) under MSW only...
+#ifdef __WXMSW__
+
+ // if we don't do it, the resizing cursor might be set for child window:
+ // and like this we explicitly say that our cursor should not be used for
+ // children windows which overlap us
+
+ if ( SashHitTest(event.GetX(), event.GetY()) )
+ {
+ // default processing is ok
+ event.Skip();
+ }
+ //else: do nothing, in particular, don't call Skip()
+#endif // wxMSW
+}