X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6362d82b3ed82aa6795e4ad03160820f94c9e4d4..654c223bc7c5457e407ff7d127a8129c821b07e4:/src/gtk/scrolwin.cpp?ds=sidebyside diff --git a/src/gtk/scrolwin.cpp b/src/gtk/scrolwin.cpp index e7de2bf53d..48159d41c8 100644 --- a/src/gtk/scrolwin.cpp +++ b/src/gtk/scrolwin.cpp @@ -36,17 +36,11 @@ // wxScrollHelper implementation // ---------------------------------------------------------------------------- -void wxScrollHelperNative::SetScrollbars(int pixelsPerUnitX, int pixelsPerUnitY, - int noUnitsX, int noUnitsY, - int xPos, int yPos, - bool noRefresh) +void wxScrollHelper::SetScrollbars(int pixelsPerUnitX, int pixelsPerUnitY, + int noUnitsX, int noUnitsY, + int xPos, int yPos, + bool noRefresh) { - int xs, ys; - GetViewStart(& xs, & ys); - - int old_x = m_xScrollPixelsPerLine * xs; - int old_y = m_yScrollPixelsPerLine * ys; - m_xScrollPixelsPerLine = pixelsPerUnitX; m_yScrollPixelsPerLine = pixelsPerUnitY; @@ -64,6 +58,13 @@ void wxScrollHelperNative::SetScrollbars(int pixelsPerUnitX, int pixelsPerUnitY, m_targetWindow->SetVirtualSize( w ? w : wxDefaultCoord, h ? h : wxDefaultCoord); + // Query view start after m_targetWindow->SetVirtualSize(...) since + // that call can change the current=old scrolling position! + int xs, ys; + GetViewStart(& xs, & ys); + int old_x = m_xScrollPixelsPerLine * xs; + int old_y = m_yScrollPixelsPerLine * ys; + // If the target is not the same as the window with the scrollbars, // then we need to update the scrollbars here, since they won't have // been updated by SetVirtualSize(). @@ -81,13 +82,13 @@ void wxScrollHelperNative::SetScrollbars(int pixelsPerUnitX, int pixelsPerUnitY, } } -void wxScrollHelperNative::DoAdjustScrollbar(GtkRange* range, - int pixelsPerLine, - int winSize, - int virtSize, - int *pos, - int *lines, - int *linesPerPage) +void wxScrollHelper::DoAdjustScrollbar(GtkRange* range, + int pixelsPerLine, + int winSize, + int virtSize, + int *pos, + int *lines, + int *linesPerPage) { int upper; int page_size; @@ -110,7 +111,7 @@ void wxScrollHelperNative::DoAdjustScrollbar(GtkRange* range, GtkAdjustment* adj = range->adjustment; adj->step_increment = 1; - adj->page_increment = + adj->page_increment = adj->page_size = page_size; gtk_range_set_range(range, 0, upper); @@ -119,7 +120,7 @@ void wxScrollHelperNative::DoAdjustScrollbar(GtkRange* range, *pos = *lines; } -void wxScrollHelperNative::AdjustScrollbars() +void wxScrollHelper::AdjustScrollbars() { int vw, vh; m_targetWindow->GetVirtualSize(&vw, &vh); @@ -163,10 +164,10 @@ void wxScrollHelperNative::AdjustScrollbars() } } -void wxScrollHelperNative::DoScrollOneDir(int orient, - int pos, - int pixelsPerLine, - int *posOld) +void wxScrollHelper::DoScrollOneDir(int orient, + int pos, + int pixelsPerLine, + int *posOld) { if ( pos != -1 && pos != *posOld && pixelsPerLine ) { @@ -181,7 +182,7 @@ void wxScrollHelperNative::DoScrollOneDir(int orient, } } -void wxScrollHelperNative::DoScroll( int x_pos, int y_pos ) +void wxScrollHelper::DoScroll( int x_pos, int y_pos ) { wxCHECK_RET( m_targetWindow != 0, _T("No target window") ); @@ -219,8 +220,8 @@ GtkPolicyType GtkPolicyFromWX(wxScrollbarVisibility visibility) } // anonymous namespace -void wxScrollHelperNative::DoShowScrollbars(wxScrollbarVisibility horz, - wxScrollbarVisibility vert) +void wxScrollHelper::DoShowScrollbars(wxScrollbarVisibility horz, + wxScrollbarVisibility vert) { GtkScrolledWindow * const scrolled = GTK_SCROLLED_WINDOW(m_win->m_widget); wxCHECK_RET( scrolled, "window must be created" );