+ // 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
+ //
+ // 1. override wxScrolledWindow::OnDraw(dc)
+ // 2. define its own OnPaint() handler
+ //
+ // In addition, in wxUniversal wxWindow defines OnPaint() itself and
+ // always processes the draw event, so we can't just try the window
+ // OnPaint() first and call our HandleOnPaint() if it doesn't process it
+ // (the latter would never be called in wxUniversal).
+ //
+ // So the solution is to have a flag telling us whether the user code drew
+ // anything in the window. We set it to true here but reset it to false in
+ // wxScrolledWindow::OnPaint() handler (which wouldn't be called if the
+ // user code defined OnPaint() in the derived class)
+ m_hasDrawnWindow = true;
+
+ // 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