From: Vadim Zeitlin Date: Sat, 27 Feb 1999 01:33:05 +0000 (+0000) Subject: wxSetCursor() bug with splitters corrected X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/f4621a09f06512d0fcf8f70c5e3dc88818f02316 wxSetCursor() bug with splitters corrected git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1808 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/samples/splitter/test.cpp b/samples/splitter/test.cpp index dcd6718c68..928ab32142 100644 --- a/samples/splitter/test.cpp +++ b/samples/splitter/test.cpp @@ -169,6 +169,7 @@ MyFrame::MyFrame(wxFrame* frame, const wxString& title, const wxPoint& pos, cons m_leftCanvas = new MyCanvas(m_splitter, CANVAS1, 0, 0, 400, 400); m_leftCanvas->SetBackgroundColour(*wxRED); m_leftCanvas->SetScrollbars(20, 20, 50, 50); + m_leftCanvas->SetCursor(wxCursor(wxCURSOR_MAGNIFIER)); m_rightCanvas = new MyCanvas(m_splitter, CANVAS2, 0, 0, 400, 400); m_rightCanvas->SetBackgroundColour(*wxCYAN); diff --git a/src/generic/splitter.cpp b/src/generic/splitter.cpp index d43a1244d3..44243d300b 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,9 @@ void wxSplitterWindow::OnMouseEvent(wxMouseEvent& event) long x, y; event.Position(&x, &y); + // reset the cursor + SetCursor(wxCursor()); + if (event.LeftDown()) { if ( SashHitTest(x, y) ) @@ -153,11 +155,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) @@ -243,10 +245,6 @@ void wxSplitterWindow::OnMouseEvent(wxMouseEvent& event) SetCursor(*m_sashCursorNS); } } - else - { - SetCursor(*wxSTANDARD_CURSOR); - } } else if (event.Dragging() && (m_dragMode == wxSPLIT_DRAG_DRAGGING)) { diff --git a/src/msw/window.cpp b/src/msw/window.cpp index 3709ab0149..c85c6abeb4 100644 --- a/src/msw/window.cpp +++ b/src/msw/window.cpp @@ -1495,16 +1495,24 @@ long wxWindow::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam) hcursor = gs_wxBusyCursor; } - else if ( m_windowCursor.Ok() ) - { - hcursor = (HCURSOR)m_windowCursor.GetHCURSOR(); - } else { - extern wxCursor *g_globalCursor; // from msw\data.cpp + wxCursor *cursor = NULL; + + if ( m_windowCursor.Ok() ) + { + cursor = &m_windowCursor; + } + else + { + extern wxCursor *g_globalCursor; // from msw\data.cpp + + if ( g_globalCursor && g_globalCursor->Ok() ) + cursor = g_globalCursor; + } - if ( g_globalCursor && g_globalCursor->Ok() ) - hcursor = (HCURSOR)g_globalCursor->GetHCURSOR(); + if ( cursor ) + hcursor = (HCURSOR)cursor->GetHCURSOR(); } if ( hcursor ) @@ -1512,8 +1520,8 @@ long wxWindow::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam) ::SetCursor(hcursor); // returning TRUE stops the DefWindowProc() from further - // processing this message - exactly what we need because - // we've just set the cursor + // processing this message - exactly what we need because we've + // just set the cursor. return TRUE; } }