diff options
author | RĂ©mi Verschelde <remi@verschelde.fr> | 2016-10-03 11:39:16 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-10-03 11:39:16 +0200 |
commit | 9c4c1733b4efd007f6bc29966f80dc5a5a38ef0a (patch) | |
tree | 392e7dc9ef9bebce7a32e0838d6a25d301d4fc19 /scene | |
parent | 9fce85f9d772bfc51df8f5e861986914fce0fc5d (diff) | |
parent | cc7bc07e33107d3474ed5f09faf6d9d5840d5f13 (diff) |
Merge pull request #6513 from Brickcaster/master
Fix for issue #6496: ItemList does not immediately scroll down to section
Diffstat (limited to 'scene')
-rw-r--r-- | scene/gui/item_list.cpp | 35 |
1 files changed, 16 insertions, 19 deletions
diff --git a/scene/gui/item_list.cpp b/scene/gui/item_list.cpp index 89cd509fbd..f69ad8fa7e 100644 --- a/scene/gui/item_list.cpp +++ b/scene/gui/item_list.cpp @@ -959,7 +959,23 @@ void ItemList::_notification(int p_what) { shape_changed=false; } + //ensure_selected_visible needs to be checked before we draw the list. + if (ensure_selected_visible && current>=0 && current <=items.size()) { + Rect2 r = items[current].rect_cache; + int from = scroll_bar->get_val(); + int to = from + scroll_bar->get_page(); + + if (r.pos.y < from) { + scroll_bar->set_val(r.pos.y); + } else if (r.pos.y+r.size.y > to) { + scroll_bar->set_val(r.pos.y+r.size.y - (to-from)); + } + + + } + + ensure_selected_visible=false; Vector2 base_ofs = bg->get_offset(); base_ofs.y-=int(scroll_bar->get_val()); @@ -1147,25 +1163,6 @@ void ItemList::_notification(int p_what) { for(int i=0;i<separators.size();i++) { draw_line(Vector2(bg->get_margin(MARGIN_LEFT),base_ofs.y+separators[i]),Vector2(size.width-bg->get_margin(MARGIN_LEFT),base_ofs.y+separators[i]),guide_color); } - - - if (ensure_selected_visible && current>=0 && current <=items.size()) { - - Rect2 r = items[current].rect_cache; - int from = scroll_bar->get_val(); - int to = from + scroll_bar->get_page(); - - if (r.pos.y < from) { - scroll_bar->set_val(r.pos.y); - } else if (r.pos.y+r.size.y > to) { - scroll_bar->set_val(r.pos.y+r.size.y - (to-from)); - } - - - } - - ensure_selected_visible=false; - } } |