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
This commit is contained in:
@@ -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)
|
||||
|
Reference in New Issue
Block a user