From c2dacded8a11acad6869093d2a440e8b290e63ae Mon Sep 17 00:00:00 2001 From: Paul Cornett Date: Mon, 10 Nov 2014 17:40:36 +0000 Subject: [PATCH] avoid reconfiguring scrollbar when settings are not changing git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@78115 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/gtk/scrolwin.cpp | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/gtk/scrolwin.cpp b/src/gtk/scrolwin.cpp index 0c1bfa444c..021c5243ce 100644 --- a/src/gtk/scrolwin.cpp +++ b/src/gtk/scrolwin.cpp @@ -69,17 +69,22 @@ void wxScrollHelper::DoAdjustScrollbar(GtkRange* range, } GtkAdjustment* adj = gtk_range_get_adjustment(range); - const bool wasVisible = gtk_adjustment_get_upper(adj) > gtk_adjustment_get_page_size(adj); + const double adj_upper = gtk_adjustment_get_upper(adj); + const double adj_page_size = gtk_adjustment_get_page_size(adj); + if (adj_upper != upper || adj_page_size != page_size) + { + const bool wasVisible = adj_upper > adj_page_size; - g_object_freeze_notify(G_OBJECT(adj)); - gtk_range_set_increments(range, 1, page_size); - gtk_adjustment_set_page_size(adj, page_size); - gtk_range_set_range(range, 0, upper); - g_object_thaw_notify(G_OBJECT(adj)); + g_object_freeze_notify(G_OBJECT(adj)); + gtk_range_set_increments(range, 1, page_size); + gtk_adjustment_set_page_size(adj, page_size); + gtk_range_set_range(range, 0, upper); + g_object_thaw_notify(G_OBJECT(adj)); - const bool isVisible = gtk_adjustment_get_upper(adj) > gtk_adjustment_get_page_size(adj); - if (isVisible != wasVisible) - m_win->m_useCachedClientSize = false; + const bool isVisible = gtk_adjustment_get_upper(adj) > gtk_adjustment_get_page_size(adj); + if (isVisible != wasVisible) + m_win->m_useCachedClientSize = false; + } // ensure that the scroll position is always in valid range if (*pos > *lines)