Emit pressed events after processing items
When processing items we may actually delete the item we're processing in the callback for the signal. To avoid this, call the signal after we're done processing the items. This fixes #19842
This commit is contained in:
parent
eef9c1f5b5
commit
868efb8184
1 changed files with 4 additions and 3 deletions
|
@ -1049,10 +1049,8 @@ void PopupMenu::activate_item(int p_item) {
|
|||
ERR_FAIL_INDEX(p_item, items.size());
|
||||
ERR_FAIL_COND(items[p_item].separator);
|
||||
int id = items[p_item].ID >= 0 ? items[p_item].ID : p_item;
|
||||
emit_signal("id_pressed", id);
|
||||
emit_signal("index_pressed", p_item);
|
||||
|
||||
//hide all parent PopupMenue's
|
||||
//hide all parent PopupMenus
|
||||
Node *next = get_parent();
|
||||
PopupMenu *pop = Object::cast_to<PopupMenu>(next);
|
||||
while (pop) {
|
||||
|
@ -1086,6 +1084,9 @@ void PopupMenu::activate_item(int p_item) {
|
|||
return;
|
||||
|
||||
hide();
|
||||
|
||||
emit_signal("id_pressed", id);
|
||||
emit_signal("index_pressed", p_item);
|
||||
}
|
||||
|
||||
void PopupMenu::remove_item(int p_idx) {
|
||||
|
|
Loading…
Add table
Reference in a new issue