Skip to content

Commit 4dbcced

Browse files
committed
Merge pull request #100714 from hpvb/fix-100663
Handle changing ItemLists from signals
2 parents 3014eec + 32ef730 commit 4dbcced

File tree

1 file changed

+13
-13
lines changed

1 file changed

+13
-13
lines changed

scene/gui/item_list.cpp

+13-13
Original file line numberDiff line numberDiff line change
@@ -748,7 +748,19 @@ void ItemList::gui_input(const Ref<InputEvent> &p_event) {
748748
return;
749749
}
750750

751-
if (items[i].selectable && (!items[i].selected || allow_reselect) && select_mode != SELECT_TOGGLE) {
751+
if (select_mode == SELECT_TOGGLE) {
752+
if (items[i].selectable) {
753+
if (items[i].selected) {
754+
deselect(i);
755+
current = i;
756+
emit_signal(SNAME("multi_selected"), i, false);
757+
} else {
758+
select(i, false);
759+
current = i;
760+
emit_signal(SNAME("multi_selected"), i, true);
761+
}
762+
}
763+
} else if (items[i].selectable && (!items[i].selected || allow_reselect)) {
752764
select(i, select_mode == SELECT_SINGLE || !mb->is_command_or_control_pressed());
753765

754766
if (select_mode == SELECT_SINGLE) {
@@ -758,18 +770,6 @@ void ItemList::gui_input(const Ref<InputEvent> &p_event) {
758770
}
759771
}
760772

761-
if (items[i].selectable && select_mode == SELECT_TOGGLE) {
762-
if (items[i].selected) {
763-
deselect(i);
764-
current = i;
765-
emit_signal(SNAME("multi_selected"), i, false);
766-
} else {
767-
select(i, false);
768-
current = i;
769-
emit_signal(SNAME("multi_selected"), i, true);
770-
}
771-
}
772-
773773
emit_signal(SNAME("item_clicked"), i, get_local_mouse_position(), mb->get_button_index());
774774

775775
if (mb->get_button_index() == MouseButton::LEFT && mb->is_double_click()) {

0 commit comments

Comments
 (0)