X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4a33eba645f96bf7a89397d7dbadd7d62ee2fde1..f861258fcace51a1aaba2f31c7498b3ba9e31371:/src/generic/splitter.cpp diff --git a/src/generic/splitter.cpp b/src/generic/splitter.cpp index b3591976b0..853774c785 100644 --- a/src/generic/splitter.cpp +++ b/src/generic/splitter.cpp @@ -6,23 +6,22 @@ // Created: 01/02/97 // RCS-ID: $Id$ // Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license +// Licence: wxWindows license ///////////////////////////////////////////////////////////////////////////// #ifdef __GNUG__ -#pragma implementation "splitter.h" -// #pragma interface + #pragma implementation "splitter.h" #endif // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" #ifdef __BORLANDC__ -#pragma hdrstop + #pragma hdrstop #endif #ifndef WX_PRECOMP -#include "wx/wx.h" + #include "wx/wx.h" #endif #include @@ -146,6 +145,14 @@ void wxSplitterWindow::OnMouseEvent(wxMouseEvent& event) long x, y; event.Position(&x, &y); + // reset the cursor +#ifdef __WXMOTIF__ + SetCursor(* wxSTANDARD_CURSOR); +#endif +#ifdef __WXMSW__ + SetCursor(wxCursor()); +#endif + if (event.LeftDown()) { if ( SashHitTest(x, y) ) @@ -153,11 +160,11 @@ void wxSplitterWindow::OnMouseEvent(wxMouseEvent& event) CaptureMouse(); m_dragMode = wxSPLIT_DRAG_DRAGGING; - + DrawSashTracker(x, y); m_oldX = x; m_oldY = y; - return; + return; } } else if (event.LeftUp() && m_dragMode == wxSPLIT_DRAG_DRAGGING) @@ -165,7 +172,7 @@ void wxSplitterWindow::OnMouseEvent(wxMouseEvent& event) // We can stop dragging now and see what we've got. m_dragMode = wxSPLIT_DRAG_NONE; ReleaseMouse(); - + // Erase old tracker DrawSashTracker(m_oldX, m_oldY); @@ -243,10 +250,6 @@ void wxSplitterWindow::OnMouseEvent(wxMouseEvent& event) SetCursor(*m_sashCursorNS); } } - else - { - SetCursor(*wxSTANDARD_CURSOR); - } } else if (event.Dragging() && (m_dragMode == wxSPLIT_DRAG_DRAGGING)) { @@ -255,7 +258,7 @@ void wxSplitterWindow::OnMouseEvent(wxMouseEvent& event) // Draw new one DrawSashTracker(x, y); - + m_oldX = x; m_oldY = y; } @@ -587,25 +590,54 @@ bool wxSplitterWindow::Unsplit(wxWindow *toRemove) if ( ! IsSplit() ) return FALSE; + wxWindow *win = NULL; if ( toRemove == NULL || toRemove == m_windowTwo) { - wxWindow *win = m_windowTwo ; + win = m_windowTwo ; m_windowTwo = (wxWindow *) NULL; - m_sashPosition = 0; - OnUnsplit(win); - SizeWindows(); } else if ( toRemove == m_windowOne ) { - wxWindow *win = m_windowOne ; + win = m_windowOne ; m_windowOne = m_windowTwo; m_windowTwo = (wxWindow *) NULL; - m_sashPosition = 0; - OnUnsplit(win); - SizeWindows(); } else + { + wxFAIL_MSG(_T("splitter: attempt to remove a non-existent window")); + + return FALSE; + } + + OnUnsplit(win); + m_sashPosition = 0; + SizeWindows(); + + return TRUE; +} + +// Replace a window with another one +bool wxSplitterWindow::ReplaceWindow(wxWindow *winOld, wxWindow *winNew) +{ + wxCHECK_MSG( winOld, FALSE, _T("use one of Split() functions instead") ); + wxCHECK_MSG( winNew, FALSE, _T("use Unsplit() functions instead") ); + + if ( winOld == m_windowTwo ) + { + m_windowTwo = winNew; + } + else if ( winOld == m_windowOne ) + { + m_windowOne = winNew; + } + else + { + wxFAIL_MSG(_T("splitter: attempt to replace a non-existent window")); + return FALSE; + } + + SizeWindows(); return TRUE; }