#include <stdlib.h>
-wxDEFINE_EVENT( wxEVT_COMMAND_SPLITTER_SASH_POS_CHANGED, wxSplitterEvent )
-wxDEFINE_EVENT( wxEVT_COMMAND_SPLITTER_SASH_POS_CHANGING, wxSplitterEvent )
-wxDEFINE_EVENT( wxEVT_COMMAND_SPLITTER_DOUBLECLICKED, wxSplitterEvent )
-wxDEFINE_EVENT( wxEVT_COMMAND_SPLITTER_UNSPLIT, wxSplitterEvent )
+wxDEFINE_EVENT( wxEVT_COMMAND_SPLITTER_SASH_POS_CHANGED, wxSplitterEvent );
+wxDEFINE_EVENT( wxEVT_COMMAND_SPLITTER_SASH_POS_CHANGING, wxSplitterEvent );
+wxDEFINE_EVENT( wxEVT_COMMAND_SPLITTER_DOUBLECLICKED, wxSplitterEvent );
+wxDEFINE_EVENT( wxEVT_COMMAND_SPLITTER_UNSPLIT, wxSplitterEvent );
IMPLEMENT_DYNAMIC_CLASS(wxSplitterWindow, wxWindow)
int x = (int)event.GetX(),
y = (int)event.GetY();
- if (GetWindowStyle() & wxSP_NOSASH)
+ if ( GetWindowStyle() & wxSP_NOSASH )
+ {
+ event.Skip();
return;
+ }
// with wxSP_LIVE_UPDATE style the splitter windows are always resized
// following the mouse movement while it drags the sash, without it we only
{
OnDoubleClickSash(x, y);
}
+ else
+ {
+ event.Skip();
+ }
}
void wxSplitterWindow::OnSize(wxSizeEvent& event)
minSize = m_minimumPaneSize;
int maxSize = GetWindowSize() - minSize - GetBorderSize() - GetSashSize();
- if ( maxSize > 0 && sashPos > maxSize )
+ if ( maxSize > 0 && sashPos > maxSize && maxSize >= m_minimumPaneSize)
sashPos = maxSize;
}
pSash = &sizeBest.y;
}
- // account for the border and the sash
+ // account for the sash if the window is actually split
+ if ( m_windowOne && m_windowTwo )
+ *pSash += GetSashSize();
+
+ // account for the border too
int border = 2*GetBorderSize();
- *pSash += GetSashSize();
sizeBest.x += border;
sizeBest.y += border;