X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ce45133ee7de9002d7fa274cbce6fc5cfab2d4c2..ed0dd9c1f0e9a79b5110d59b903a5f1fd9ee6c42:/src/generic/scrlwing.cpp diff --git a/src/generic/scrlwing.cpp b/src/generic/scrlwing.cpp index bc1d5cdbde..0f1a4f57ef 100644 --- a/src/generic/scrlwing.cpp +++ b/src/generic/scrlwing.cpp @@ -203,8 +203,18 @@ bool wxScrollHelperEvtHandler::ProcessEvent(wxEvent& event) // user code defined OnPaint() in the derived class) m_hasDrawnWindow = true; - // pass it on to the real handler - bool processed = m_nextHandler->ProcessEventLocally(event); + // Pass it on to the real handler: notice that we must not call + // ProcessEvent() on this object itself as it wouldn't pass it to the next + // handler (i.e. the real window) if we're called from a previous handler + // (as indicated by "process here only" flag being set) and we do want to + // execute the handler defined in the window we're associated with right + // now, without waiting until TryAfter() is called from wxEvtHandler. + // + // Note that this means that the handler in the window will be called twice + // if there is a preceding event handler in the chain because we do it from + // here now and the base class DoTryChain() will also call it itself when + // we return. But this unfortunately seems unavoidable. + bool processed = m_nextHandler->ProcessEvent(event); // always process the size events ourselves, even if the user code handles // them as well, as we need to AdjustScrollbars()