// headers
// ----------------------------------------------------------------------------
-#ifdef __VMS
-#define XtDisplay XTDISPLAY
-#endif
-
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#pragma hdrstop
#endif
+#ifdef __VMS
+#define XtDisplay XTDISPLAY
+#endif
+
#include "wx/scrolwin.h"
#ifndef WX_PRECOMP
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 )
{
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
// ----------------------------------------------------------------------------
}
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();
// 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)
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);
}
}