Merge pull request #13245 from Krakean/itemlist_add_some_signals
Added some new API functionality to Item List component
This commit is contained in:
commit
7e4cfe4b94
2 changed files with 29 additions and 0 deletions
|
@ -257,6 +257,20 @@ void ItemList::unselect(int p_idx) {
|
||||||
}
|
}
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ItemList::unselect_all() {
|
||||||
|
|
||||||
|
if (items.size() < 1)
|
||||||
|
return;
|
||||||
|
|
||||||
|
for (int i = 0; i < items.size(); i++) {
|
||||||
|
|
||||||
|
items[i].selected = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
bool ItemList::is_selected(int p_idx) const {
|
bool ItemList::is_selected(int p_idx) const {
|
||||||
|
|
||||||
ERR_FAIL_INDEX_V(p_idx, items.size(), false);
|
ERR_FAIL_INDEX_V(p_idx, items.size(), false);
|
||||||
|
@ -530,6 +544,9 @@ void ItemList::_gui_input(const Ref<InputEvent> &p_event) {
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Since closest is null, more likely we clicked on empty space, so send signal to interested controls. Allows, for example, implement items deselecting.
|
||||||
|
emit_signal("nothing_selected");
|
||||||
}
|
}
|
||||||
if (mb.is_valid() && mb->get_button_index() == BUTTON_WHEEL_UP && mb->is_pressed()) {
|
if (mb.is_valid() && mb->get_button_index() == BUTTON_WHEEL_UP && mb->is_pressed()) {
|
||||||
|
|
||||||
|
@ -1249,6 +1266,15 @@ Vector<int> ItemList::get_selected_items() {
|
||||||
return selected;
|
return selected;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool ItemList::is_anything_selected() {
|
||||||
|
for (int i = 0; i < items.size(); i++) {
|
||||||
|
if (items[i].selected)
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
void ItemList::_set_items(const Array &p_items) {
|
void ItemList::_set_items(const Array &p_items) {
|
||||||
|
|
||||||
ERR_FAIL_COND(p_items.size() % 3);
|
ERR_FAIL_COND(p_items.size() % 3);
|
||||||
|
@ -1409,6 +1435,7 @@ void ItemList::_bind_methods() {
|
||||||
ADD_SIGNAL(MethodInfo("multi_selected", PropertyInfo(Variant::INT, "index"), PropertyInfo(Variant::BOOL, "selected")));
|
ADD_SIGNAL(MethodInfo("multi_selected", PropertyInfo(Variant::INT, "index"), PropertyInfo(Variant::BOOL, "selected")));
|
||||||
ADD_SIGNAL(MethodInfo("item_activated", PropertyInfo(Variant::INT, "index")));
|
ADD_SIGNAL(MethodInfo("item_activated", PropertyInfo(Variant::INT, "index")));
|
||||||
ADD_SIGNAL(MethodInfo("rmb_clicked", PropertyInfo(Variant::VECTOR2, "at_position")));
|
ADD_SIGNAL(MethodInfo("rmb_clicked", PropertyInfo(Variant::VECTOR2, "at_position")));
|
||||||
|
ADD_SIGNAL(MethodInfo("nothing_selected"));
|
||||||
|
|
||||||
GLOBAL_DEF("gui/timers/incremental_search_max_interval_msec", 2000);
|
GLOBAL_DEF("gui/timers/incremental_search_max_interval_msec", 2000);
|
||||||
}
|
}
|
||||||
|
|
|
@ -156,8 +156,10 @@ public:
|
||||||
|
|
||||||
void select(int p_idx, bool p_single = true);
|
void select(int p_idx, bool p_single = true);
|
||||||
void unselect(int p_idx);
|
void unselect(int p_idx);
|
||||||
|
void unselect_all();
|
||||||
bool is_selected(int p_idx) const;
|
bool is_selected(int p_idx) const;
|
||||||
Vector<int> get_selected_items();
|
Vector<int> get_selected_items();
|
||||||
|
bool is_anything_selected();
|
||||||
|
|
||||||
void set_current(int p_current);
|
void set_current(int p_current);
|
||||||
int get_current() const;
|
int get_current() const;
|
||||||
|
|
Loading…
Reference in a new issue