X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a85c15521738cd2951153c3bbab36b6f272bef1e..c57e33394ca152e6e13f10363b76aef6e74a4705:/src/generic/scrlwing.cpp diff --git a/src/generic/scrlwing.cpp b/src/generic/scrlwing.cpp index ff58945bf8..deee047a93 100644 --- a/src/generic/scrlwing.cpp +++ b/src/generic/scrlwing.cpp @@ -167,6 +167,13 @@ void wxAutoScrollTimer::Notify() bool wxScrollHelperEvtHandler::ProcessEvent(wxEvent& event) { + wxEventType evType = event.GetEventType(); + + if ( evType == wxEVT_SIZE ) + { + m_scrollHelper->HandleOnSize((wxSizeEvent &)event); + } + if ( wxEvtHandler::ProcessEvent(event) ) return TRUE; @@ -174,8 +181,6 @@ bool wxScrollHelperEvtHandler::ProcessEvent(wxEvent& event) // ProcessEvent() above event.Skip(FALSE); - wxEventType evType = event.GetEventType(); - if ( evType == wxEVT_PAINT ) { m_scrollHelper->HandleOnPaint((wxPaintEvent &)event); @@ -209,10 +214,6 @@ bool wxScrollHelperEvtHandler::ProcessEvent(wxEvent& event) m_scrollHelper->HandleOnMouseWheel((wxMouseEvent &)event); } #endif // wxUSE_MOUSEWHEEL - else if ( evType == wxEVT_SIZE ) - { - m_scrollHelper->HandleOnSize((wxSizeEvent &)event); - } else if ( evType == wxEVT_CHAR ) { m_scrollHelper->HandleOnChar((wxKeyEvent &)event); @@ -977,9 +978,24 @@ void wxScrollHelper::HandleOnMouseWheel(wxMouseEvent& event) { lines *= event.GetLinesPerAction(); - int vsx, vsy; - GetViewStart(&vsx, &vsy); - Scroll(-1, vsy - lines); + wxScrollWinEvent newEvent; + + newEvent.SetPosition(m_xScrollPosition - lines); + newEvent.SetOrientation(wxVERTICAL); + newEvent.m_eventObject = m_win; + if (lines > 0) + newEvent.m_eventType = wxEVT_SCROLLWIN_LINEUP; + else + newEvent.m_eventType = wxEVT_SCROLLWIN_LINEDOWN; + + int times = abs(lines); + for (; times > 0; times --) + m_win->GetEventHandler()->ProcessEvent(newEvent); + + /* Old Way */ + // int vsx, vsy; + // GetViewStart(&vsx, &vsy); + // Scroll(-1, vsy - lines); } }