summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Davenport <qball@gmpclient.org>2016-12-20 19:29:46 +0100
committerDave Davenport <qball@gmpclient.org>2016-12-20 19:29:46 +0100
commit74a1d0313a3d18043bd5c431b66a0901ed1d9996 (patch)
treeaeb7fbbc6dad81f85424b3bf87fa02cb5a632fe6
parent49f58a33f5d09bb545ae50ab8eecc0aaa9ae7508 (diff)
Force all three properties of scrollbar to be in sync
-rw-r--r--source/widgets/listview.c5
1 files 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 ) );
}