From 449d48f9e15e1430805aed3b33e55000754ad926 Mon Sep 17 00:00:00 2001 From: Julian Smart Date: Sun, 12 May 2002 16:08:47 +0000 Subject: [PATCH] Fixed mouse handling for captured windows Didn't need most of the cshelp fix git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@15532 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/common/cshelp.cpp | 12 ++++++++---- src/msw/window.cpp | 12 +++++++++--- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/common/cshelp.cpp b/src/common/cshelp.cpp index 2cc7626a4a..43ebbef496 100644 --- a/src/common/cshelp.cpp +++ b/src/common/cshelp.cpp @@ -87,6 +87,9 @@ wxContextHelp::~wxContextHelp() EndContextHelp(); } +// Not currently needed, but on some systems capture may not work as +// expected so we'll leave it here for now. +#if 0 static void wxPushOrPopEventHandlers(wxContextHelp* help, wxWindow* win, bool push) { if (push) @@ -103,6 +106,7 @@ static void wxPushOrPopEventHandlers(wxContextHelp* help, wxWindow* win, bool pu node = node->Next(); } } +#endif // Begin 'context help mode' bool wxContextHelp::BeginContextHelp(wxWindow* win) @@ -122,8 +126,8 @@ bool wxContextHelp::BeginContextHelp(wxWindow* win) m_status = FALSE; -// win->PushEventHandler(new wxContextHelpEvtHandler(this)); - wxPushOrPopEventHandlers(this, win, TRUE); + win->PushEventHandler(new wxContextHelpEvtHandler(this)); + //wxPushOrPopEventHandlers(this, win, TRUE); win->CaptureMouse(); @@ -131,8 +135,8 @@ bool wxContextHelp::BeginContextHelp(wxWindow* win) win->ReleaseMouse(); -// win->PopEventHandler(TRUE); - wxPushOrPopEventHandlers(this, win, FALSE); + win->PopEventHandler(TRUE); + //wxPushOrPopEventHandlers(this, win, FALSE); win->SetCursor(oldCursor); diff --git a/src/msw/window.cpp b/src/msw/window.cpp index 8ce7a97e2f..b280a33098 100644 --- a/src/msw/window.cpp +++ b/src/msw/window.cpp @@ -2421,9 +2421,15 @@ long wxWindowMSW::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam y = GET_Y_LPARAM(lParam); // redirect the event to a static control if necessary - wxWindow *win = FindWindowForMouseEvent(this, &x, &y); - - processed = win->HandleMouseEvent(message, x, y, wParam); + if (this == GetCapture()) + { + processed = HandleMouseEvent(message, x, y, wParam); + } + else + { + wxWindow *win = FindWindowForMouseEvent(this, &x, &y); + processed = win->HandleMouseEvent(message, x, y, wParam); + } } } break; -- 2.45.2