From ddcbe73271b7ef37af3dfbab711d4c7337d3ad4b Mon Sep 17 00:00:00 2001 From: Julian Smart Date: Tue, 29 Jan 2008 11:02:47 +0000 Subject: [PATCH] Fixed global cursor setting on Mac, which fixes busy cursor and context help cursor git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@51438 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/common/cshelp.cpp | 8 ++++++-- src/mac/carbon/cursor.cpp | 2 ++ src/mac/carbon/toplevel.cpp | 13 +++++++++---- src/mac/carbon/utils.cpp | 4 ++++ 4 files changed, 21 insertions(+), 6 deletions(-) diff --git a/src/common/cshelp.cpp b/src/common/cshelp.cpp index c24b709e98..cfce45d48d 100644 --- a/src/common/cshelp.cpp +++ b/src/common/cshelp.cpp @@ -123,8 +123,8 @@ bool wxContextHelp::BeginContextHelp(wxWindow* win) wxCursor oldCursor = win->GetCursor(); win->SetCursor(cursor); -#ifdef __WXMSW__ - // wxSetCursor(cursor); +#ifdef __WXMAC__ + wxSetCursor(cursor); #endif m_status = false; @@ -149,6 +149,10 @@ bool wxContextHelp::BeginContextHelp(wxWindow* win) win->SetCursor(oldCursor); +#ifdef __WXMAC__ + wxSetCursor(wxNullCursor); +#endif + if (m_status) { wxPoint pt; diff --git a/src/mac/carbon/cursor.cpp b/src/mac/carbon/cursor.cpp index 0b8e4c8a7b..c48663d7fd 100644 --- a/src/mac/carbon/cursor.cpp +++ b/src/mac/carbon/cursor.cpp @@ -689,7 +689,9 @@ wxCursor::~wxCursor() } // Global cursor setting +wxCursor gGlobalCursor; void wxSetCursor(const wxCursor& cursor) { cursor.MacInstall() ; + gGlobalCursor = cursor; } diff --git a/src/mac/carbon/toplevel.cpp b/src/mac/carbon/toplevel.cpp index 7e90437c56..99d2784dec 100644 --- a/src/mac/carbon/toplevel.cpp +++ b/src/mac/carbon/toplevel.cpp @@ -563,11 +563,16 @@ wxMacTopLevelMouseEventHandler(EventHandlerCallRef WXUNUSED(handler), wxWindow* cursorTarget = currentMouseWindow ; wxPoint cursorPoint( wxevent.m_x , wxevent.m_y ) ; - while ( cursorTarget && !cursorTarget->MacSetupCursor( cursorPoint ) ) + extern wxCursor gGlobalCursor; + + if (!gGlobalCursor.IsOk()) { - cursorTarget = cursorTarget->GetParent() ; - if ( cursorTarget ) - cursorPoint += cursorTarget->GetPosition(); + while ( cursorTarget && !cursorTarget->MacSetupCursor( cursorPoint ) ) + { + cursorTarget = cursorTarget->GetParent() ; + if ( cursorTarget ) + cursorPoint += cursorTarget->GetPosition(); + } } } diff --git a/src/mac/carbon/utils.cpp b/src/mac/carbon/utils.cpp index 7c8de25d0b..ed23889918 100644 --- a/src/mac/carbon/utils.cpp +++ b/src/mac/carbon/utils.cpp @@ -126,6 +126,8 @@ void wxBeginBusyCursor(const wxCursor *cursor) { gMacStoredActiveCursor = gMacCurrentCursor; cursor->MacInstall(); + + wxSetCursor(*cursor); } //else: nothing to do, already set } @@ -140,6 +142,8 @@ void wxEndBusyCursor() { gMacStoredActiveCursor.MacInstall(); gMacStoredActiveCursor = wxNullCursor; + + wxSetCursor(wxNullCursor); } } -- 2.47.2