X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/993cfa87574b6e06b755613c37360f0c5e147478..758bce950ba9236d0a9edc4c880c3ec73b5173f3:/src/generic/scrlwing.cpp?ds=sidebyside diff --git a/src/generic/scrlwing.cpp b/src/generic/scrlwing.cpp index fc39dd6d16..18a963a16e 100644 --- a/src/generic/scrlwing.cpp +++ b/src/generic/scrlwing.cpp @@ -173,13 +173,6 @@ bool wxScrollHelperEvtHandler::ProcessEvent(wxEvent& event) { wxEventType evType = event.GetEventType(); - // always process the size events ourselves, even if the user code handles - // them as well, as we need to AdjustScrollbars() - if ( evType == wxEVT_SIZE ) - { - m_scrollHelper->HandleOnSize((wxSizeEvent &)event); - } - // the explanation of wxEVT_PAINT processing hack: for historic reasons // there are 2 ways to process this event in classes deriving from // wxScrolledWindow. The user code may @@ -198,7 +191,24 @@ bool wxScrollHelperEvtHandler::ProcessEvent(wxEvent& event) // user code defined OnPaint() in the derived class) m_hasDrawnWindow = TRUE; - if ( wxEvtHandler::ProcessEvent(event) ) + // pass it on to the real handler + bool processed = wxEvtHandler::ProcessEvent(event); + + // always process the size events ourselves, even if the user code handles + // them as well, as we need to AdjustScrollbars() + // + // NB: it is important to do it after processing the event in the normal + // way as HandleOnSize() may generate a wxEVT_SIZE itself if the + // scrollbar[s] (dis)appear and it should be seen by the user code + // after this one + if ( evType == wxEVT_SIZE ) + { + m_scrollHelper->HandleOnSize((wxSizeEvent &)event); + + return TRUE; + } + + if ( processed ) { // normally, nothing more to do here - except if it was a paint event // which wasn't really processed, then we'll try to call our