invalidate cached client size when scrollbar visibility changes

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_3_0_BRANCH@78113 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Paul Cornett
2014-11-10 16:51:58 +00:00
parent 6d2d09327d
commit 8c7fc09b2b
2 changed files with 16 additions and 2 deletions

View File

@@ -4827,12 +4827,19 @@ void wxWindowGTK::SetScrollbar(int orient,
g_signal_handlers_block_by_func(
sb, (void*)gtk_scrollbar_value_changed, this);
GtkAdjustment* adj = gtk_range_get_adjustment(sb);
const bool wasVisible = gtk_adjustment_get_upper(adj) > gtk_adjustment_get_page_size(adj);
gtk_range_set_increments(sb, 1, thumbVisible);
gtk_adjustment_set_page_size(gtk_range_get_adjustment(sb), thumbVisible);
gtk_adjustment_set_page_size(adj, thumbVisible);
gtk_range_set_range(sb, 0, range);
gtk_range_set_value(sb, pos);
m_scrollPos[dir] = gtk_range_get_value(sb);
const bool isVisible = gtk_adjustment_get_upper(adj) > gtk_adjustment_get_page_size(adj);
if (isVisible != wasVisible)
m_useCachedClientSize = false;
g_signal_handlers_unblock_by_func(
sb, (void*)gtk_scrollbar_value_changed, this);
}