X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2e9c0c010a375156eb72eaa1e2e4efcbb7ecf06b..457e5a40e7d49f761887208f1874cb31068a31f1:/src/generic/scrlwing.cpp diff --git a/src/generic/scrlwing.cpp b/src/generic/scrlwing.cpp index 7db540e792..4d4c52bc70 100644 --- a/src/generic/scrlwing.cpp +++ b/src/generic/scrlwing.cpp @@ -18,10 +18,6 @@ // headers // ---------------------------------------------------------------------------- -#ifdef __VMS -#define XtDisplay XTDISPLAY -#endif - // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" @@ -29,6 +25,10 @@ #pragma hdrstop #endif +#ifdef __VMS +#define XtDisplay XTDISPLAY +#endif + #include "wx/scrolwin.h" #ifndef WX_PRECOMP @@ -277,10 +277,14 @@ bool wxScrollHelperEvtHandler::ProcessEvent(wxEvent& event) m_scrollHelper->HandleOnMouseLeave((wxMouseEvent &)event); } #if wxUSE_MOUSEWHEEL + // Use GTK's own scroll wheel handling in GtkScrolledWindow +#ifndef __WXGTK20__ else if ( evType == wxEVT_MOUSEWHEEL ) { m_scrollHelper->HandleOnMouseWheel((wxMouseEvent &)event); + return true; } +#endif #endif // wxUSE_MOUSEWHEEL else if ( evType == wxEVT_CHAR ) { @@ -468,22 +472,6 @@ wxWindow *wxScrollHelper::GetTargetWindow() const return m_targetWindow; } -#ifdef __WXMAC__ -static bool wxScrolledWindowHasChildren(wxWindow* win) -{ - wxWindowList::compatibility_iterator node = win->GetChildren().GetFirst(); - while ( node ) - { - wxWindow* child = node->GetData(); - if ( !child->IsKindOf(CLASSINFO(wxScrollBar)) ) - return true; - - node = node->GetNext(); - } - return false; -} -#endif - // ---------------------------------------------------------------------------- // scrolling implementation itself // ---------------------------------------------------------------------------- @@ -500,11 +488,6 @@ void wxScrollHelper::HandleOnScroll(wxScrollWinEvent& event) } bool needsRefresh = false; -#ifdef __WXMAC__ - // OS X blocks on immediate redraws, so make this a refresh - if (!wxScrolledWindowHasChildren(m_targetWindow)) - needsRefresh = true; -#endif int dx = 0, dy = 0; int orient = event.GetOrientation(); @@ -536,7 +519,12 @@ void wxScrollHelper::HandleOnScroll(wxScrollWinEvent& event) // flush all pending repaints before we change m_{x,y}ScrollPosition, as // otherwise invalidated area could be updated incorrectly later when // ScrollWindow() makes sure they're repainted before scrolling them +#ifdef __WXMAC__ + // wxWindowMac is taking care of making sure the update area is correctly + // set up, while not forcing an immediate redraw +#else m_targetWindow->Update(); +#endif } if (orient == wxHORIZONTAL) @@ -1200,18 +1188,18 @@ void wxScrollHelper::HandleOnChar(wxKeyEvent& event) if ( m_xScrollPosition != xScrollOld ) { - wxScrollWinEvent event(wxEVT_SCROLLWIN_THUMBTRACK, m_xScrollPosition, + wxScrollWinEvent evt(wxEVT_SCROLLWIN_THUMBTRACK, m_xScrollPosition, wxHORIZONTAL); - event.SetEventObject(m_win); - m_win->GetEventHandler()->ProcessEvent(event); + evt.SetEventObject(m_win); + m_win->GetEventHandler()->ProcessEvent(evt); } if ( m_yScrollPosition != yScrollOld ) { - wxScrollWinEvent event(wxEVT_SCROLLWIN_THUMBTRACK, m_yScrollPosition, + wxScrollWinEvent evt(wxEVT_SCROLLWIN_THUMBTRACK, m_yScrollPosition, wxVERTICAL); - event.SetEventObject(m_win); - m_win->GetEventHandler()->ProcessEvent(event); + evt.SetEventObject(m_win); + m_win->GetEventHandler()->ProcessEvent(evt); } }