diff --git a/src/gtk/scrolbar.cpp b/src/gtk/scrolbar.cpp index 83418b711c..071dc248e3 100644 --- a/src/gtk/scrolbar.cpp +++ b/src/gtk/scrolbar.cpp @@ -209,9 +209,14 @@ void wxScrollBar::SetScrollbar(int position, int thumbSize, int range, int pageS } g_signal_handlers_block_by_func(m_widget, (void*)gtk_value_changed, this); GtkRange* widget = GTK_RANGE(m_widget); - gtk_adjustment_set_page_size(gtk_range_get_adjustment(widget), thumbSize); + GtkAdjustment* adj = gtk_range_get_adjustment(widget); + + g_object_freeze_notify(G_OBJECT(adj)); gtk_range_set_increments(widget, 1, pageSize); + gtk_adjustment_set_page_size(adj, thumbSize); gtk_range_set_range(widget, 0, range); + g_object_thaw_notify(G_OBJECT(adj)); + gtk_range_set_value(widget, position); m_scrollPos[0] = gtk_range_get_value(widget); g_signal_handlers_unblock_by_func(m_widget, (void*)gtk_value_changed, this); diff --git a/src/gtk/scrolwin.cpp b/src/gtk/scrolwin.cpp index a2d793d69b..0c1bfa444c 100644 --- a/src/gtk/scrolwin.cpp +++ b/src/gtk/scrolwin.cpp @@ -71,9 +71,11 @@ 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); + 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) diff --git a/src/gtk/window.cpp b/src/gtk/window.cpp index 1efaac901f..3eba31a867 100644 --- a/src/gtk/window.cpp +++ b/src/gtk/window.cpp @@ -4878,9 +4878,12 @@ void wxWindowGTK::SetScrollbar(int orient, GtkAdjustment* adj = gtk_range_get_adjustment(sb); const bool wasVisible = gtk_adjustment_get_upper(adj) > gtk_adjustment_get_page_size(adj); + g_object_freeze_notify(G_OBJECT(adj)); gtk_range_set_increments(sb, 1, thumbVisible); gtk_adjustment_set_page_size(adj, thumbVisible); gtk_range_set_range(sb, 0, range); + g_object_thaw_notify(G_OBJECT(adj)); + gtk_range_set_value(sb, pos); m_scrollPos[dir] = gtk_range_get_value(sb);