X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f6bcfd974ef26faf6f91a62cac09827e09463fd1..c0fbf24ba6abc81db66ead334d69af670a8ec5a7:/src/generic/sashwin.cpp diff --git a/src/generic/sashwin.cpp b/src/generic/sashwin.cpp index a808264d02..90bc832b39 100644 --- a/src/generic/sashwin.cpp +++ b/src/generic/sashwin.cpp @@ -22,20 +22,23 @@ #pragma hdrstop #endif +#if wxUSE_SASH + #ifndef WX_PRECOMP -#include "wx/wx.h" + #include "wx/dialog.h" + #include "wx/frame.h" + #include "wx/settings.h" #endif -#if wxUSE_SASH - #include #include -#include "wx/string.h" #include "wx/dcscreen.h" #include "wx/sashwin.h" #include "wx/laywin.h" +DEFINE_EVENT_TYPE(wxEVT_SASH_DRAGGED) + IMPLEMENT_DYNAMIC_CLASS(wxSashWindow, wxWindow) IMPLEMENT_DYNAMIC_CLASS(wxSashEvent, wxCommandEvent) @@ -73,6 +76,7 @@ void wxSashWindow::Init() m_maximumPaneSizeY = 10000; m_sashCursorWE = new wxCursor(wxCURSOR_SIZEWE); m_sashCursorNS = new wxCursor(wxCURSOR_SIZENS); + m_mouseCaptured = FALSE; // Eventually, we'll respond to colour change messages InitColours(); @@ -97,7 +101,8 @@ void wxSashWindow::OnMouseEvent(wxMouseEvent& event) // reset the cursor #if defined(__WXMOTIF__) || defined(__WXGTK__) - SetCursor(* wxSTANDARD_CURSOR); + // Not necessary and in fact inhibits proper cursor setting (JACS 8/2000) + //SetCursor(* wxSTANDARD_CURSOR); #endif #ifdef __WXMSW__ SetCursor(wxNullCursor); @@ -106,6 +111,7 @@ void wxSashWindow::OnMouseEvent(wxMouseEvent& event) if (event.LeftDown()) { CaptureMouse(); + m_mouseCaptured = TRUE; if ( sashHit != wxSASH_NONE ) { @@ -144,7 +150,10 @@ void wxSashWindow::OnMouseEvent(wxMouseEvent& event) else if ( event.LeftUp() && m_dragMode == wxSASH_DRAG_LEFT_DOWN ) { // Wasn't a proper drag - ReleaseMouse(); + if (m_mouseCaptured) + ReleaseMouse(); + m_mouseCaptured = FALSE; + wxScreenDC::EndDrawingOnTop(); m_dragMode = wxSASH_DRAG_NONE; m_draggingEdge = wxSASH_NONE; @@ -153,7 +162,10 @@ void wxSashWindow::OnMouseEvent(wxMouseEvent& event) { // We can stop dragging now and see what we've got. m_dragMode = wxSASH_DRAG_NONE; - ReleaseMouse(); + if (m_mouseCaptured) + ReleaseMouse(); + m_mouseCaptured = FALSE; + // Erase old tracker DrawSashTracker(m_draggingEdge, m_oldX, m_oldY); @@ -273,7 +285,9 @@ void wxSashWindow::OnMouseEvent(wxMouseEvent& event) } else if ( event.LeftUp() ) { - ReleaseMouse(); + if (m_mouseCaptured) + ReleaseMouse(); + m_mouseCaptured = FALSE; } else if (event.Moving() && !event.Dragging()) { @@ -645,12 +659,12 @@ void wxSashWindow::SizeWindows() void wxSashWindow::InitColours() { // Shadow colours -#if defined(__WIN95__) - m_faceColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE); - m_mediumShadowColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DSHADOW); - m_darkShadowColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DDKSHADOW); - m_lightShadowColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DLIGHT); - m_hilightColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DHILIGHT); +#ifndef __WIN16__ + m_faceColour = wxSystemSettings::GetColour(wxSYS_COLOUR_3DFACE); + m_mediumShadowColour = wxSystemSettings::GetColour(wxSYS_COLOUR_3DSHADOW); + m_darkShadowColour = wxSystemSettings::GetColour(wxSYS_COLOUR_3DDKSHADOW); + m_lightShadowColour = wxSystemSettings::GetColour(wxSYS_COLOUR_3DLIGHT); + m_hilightColour = wxSystemSettings::GetColour(wxSYS_COLOUR_3DHILIGHT); #else m_faceColour = *(wxTheColourDatabase->FindColour("LIGHT GREY")); m_mediumShadowColour = *(wxTheColourDatabase->FindColour("GREY"));