Quellcode durchsuchen

Merge pull request #21090 from hpvb/fix-19842-redux

Delay emitting pressed signals in PopupMenu
Juan Linietsky vor 7 Jahren
Ursprung
Commit
d7b892294b
1 geänderte Dateien mit 11 neuen und 7 gelöschten Zeilen
  1. 11 7
      scene/gui/popup_menu.cpp

+ 11 - 7
scene/gui/popup_menu.cpp

@@ -1071,22 +1071,26 @@ void PopupMenu::activate_item(int p_item) {
 		pop = Object::cast_to<PopupMenu>(next);
 	}
 
-	emit_signal("id_pressed", id);
-	emit_signal("index_pressed", p_item);
-
 	// Hides popup by default; unless otherwise specified
 	// by using set_hide_on_item_selection and set_hide_on_checkable_item_selection
 
+	bool need_hide = true;
+
 	if (items[p_item].checkable_type) {
 		if (!hide_on_checkable_item_selection)
-			return;
+			need_hide = false;
 	} else if (0 < items[p_item].max_states) {
 		if (!hide_on_multistate_item_selection)
-			return;
+			need_hide = false;
 	} else if (!hide_on_item_selection)
-		return;
+		need_hide = false;
 
-	hide();
+	emit_signal("id_pressed", id);
+	emit_signal("index_pressed", p_item);
+
+	if (need_hide) {
+		hide();
+	}
 }
 
 void PopupMenu::remove_item(int p_idx) {