#include "wx/string.h"
#include "wx/dcscreen.h"
#include "wx/sashwin.h"
+#include "wx/laywin.h"
#if !USE_SHARED_LIBRARY
IMPLEMENT_DYNAMIC_CLASS(wxSashWindow, wxWindow)
{
wxPaintDC dc(this);
-#if 0
- if ( m_borderSize > 0 )
- DrawBorders(dc);
-#endif
+ // if ( m_borderSize > 0 )
+ DrawBorders(dc);
DrawSashes(dc);
}
wxSashEdgePosition sashHit = SashHitTest(x, y);
+ // reset the cursor
+#ifdef __WXMOTIF__
+ SetCursor(* wxSTANDARD_CURSOR);
+#endif
+#ifdef __WXMSW__
+ SetCursor(wxCursor());
+#endif
+
if (event.LeftDown())
{
if ( sashHit != wxSASH_NONE )
wxScreenDC::EndDrawingOnTop();
m_dragMode = wxSASH_DRAG_NONE;
m_draggingEdge = wxSASH_NONE;
-
- SetCursor(*wxSTANDARD_CURSOR);
}
else if (event.LeftUp() && m_dragMode == wxSASH_DRAG_DRAGGING)
{
SetCursor(*m_sashCursorNS);
}
}
- else
- {
- SetCursor(*wxSTANDARD_CURSOR);
- }
}
else if ( event.Dragging() &&
((m_dragMode == wxSASH_DRAG_DRAGGING) || (m_dragMode == wxSASH_DRAG_LEFT_DOWN))
}
case wxSASH_LEFT:
{
- if ((x >= GetEdgeMargin(position)) && (x >= 0))
+ if ((x <= GetEdgeMargin(position)) && (x >= 0))
return wxSASH_LEFT;
break;
}
int cw, ch;
GetClientSize(&cw, &ch);
- if (GetChildren().Number() > 0)
+ if (GetChildren().Number() == 1)
{
wxWindow* child = (wxWindow*) (GetChildren().First()->Data());
child->SetSize(x, y, width, height);
}
+ else if (GetChildren().Number() > 1)
+ {
+ // Perhaps multiple children are themselves sash windows.
+ // TODO: this doesn't really work because the subwindows sizes/positions
+ // must be set to leave a gap for the parent's sash (hit-test and decorations).
+ // Perhaps we can allow for this within LayoutWindow, testing whether the parent
+ // is a sash window, and if so, allowing some space for the edges.
+ wxLayoutAlgorithm layout;
+ layout.LayoutWindow(this);
+ }
wxClientDC dc(this);
DrawBorders(dc);