~ruther/CTU-FEE-B0B35APO-Semestral-project

3e36a097f9dd79859c78f78fd7f14cf459b4a63e — František Boháček 4 years ago 93afa06
fix: always show selected item on zooming
1 files changed, 7 insertions(+), 5 deletions(-)

M lib-gui/src/gui_list_container.c
M lib-gui/src/gui_list_container.c => lib-gui/src/gui_list_container.c +7 -5
@@ 164,13 164,15 @@ void gui_list_container_update(gui_t *gui, container_t *container) {
  }

  uint32_t items_count = gui_list_get_visible_items_count(container);
  uint32_t last_visible_index = first_visible_index + items_count;
  uint32_t selected_index = list.selected_index;

  if (selected_index < first_visible_index) {
    list.scroll_y = selected_index * item_full_height;
  } else if (selected_index > last_visible_index) {
    list.scroll_y = (selected_index - items_count) * item_full_height;
  uint32_t last_scroll = (selected_index - items_count) * item_full_height;
  uint32_t first_scroll = selected_index * item_full_height;

  if (list.scroll_y > first_scroll) {
    list.scroll_y = first_scroll;
  } else if (list.scroll_y < last_scroll) {
    list.scroll_y = last_scroll;
  }

  container->inner.list = list;