From 74a1d0313a3d18043bd5c431b66a0901ed1d9996 Mon Sep 17 00:00:00 2001 From: Dave Davenport Date: Tue, 20 Dec 2016 19:29:46 +0100 Subject: Force all three properties of scrollbar to be in sync --- source/widgets/listview.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/source/widgets/listview.c b/source/widgets/listview.c index d5f0efe0..214dd1a5 100644 --- a/source/widgets/listview.c +++ b/source/widgets/listview.c @@ -149,6 +149,9 @@ static void listview_draw ( widget *wid, cairo_t *draw ) else { offset = scroll_per_page ( lv ); } + // Set these all together to make sure they update consistently. + scrollbar_set_max_value ( lv->scrollbar, lv->req_elements ); + scrollbar_set_handle_length ( lv->scrollbar, lv->cur_columns * lv->max_rows ); scrollbar_set_handle ( lv->scrollbar, lv->selected ); lv->last_offset = offset; if ( lv->cur_elements > 0 && lv->max_rows > 0 ) { @@ -209,7 +212,6 @@ static void listview_recompute_elements ( listview *lv ) } } lv->rchanged = TRUE; - scrollbar_set_handle_length ( lv->scrollbar, lv->cur_columns * lv->max_rows ); lv->cur_elements = newne; } @@ -218,7 +220,6 @@ void listview_set_num_elements ( listview *lv, unsigned int rows ) lv->req_elements = rows; listview_set_selected ( lv, lv->selected ); listview_recompute_elements ( lv ); - scrollbar_set_max_value ( lv->scrollbar, lv->req_elements ); widget_queue_redraw ( WIDGET ( lv ) ); } -- cgit v1.2.3