summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2024-01-16 15:07:47 +0100
committerRémi Verschelde <rverschelde@gmail.com>2024-01-16 15:07:47 +0100
commit04eafd557faa5fbe8f7f2634810a0d2f24f99770 (patch)
treed02d7826531f99f3835ec9645310736becfb1dd0
parent35aee0e3ad66e0f4b9359e1776f86fe709834ed9 (diff)
parent5a61fecd0e1781484d3cd0d4822221556e8be234 (diff)
downloadredot-engine-04eafd557faa5fbe8f7f2634810a0d2f24f99770.tar.gz
Merge pull request #87249 from bruvzg/macos_menu_clear
[macOS] Do not unbind PopupMenu from global menu on `clear` call.
-rw-r--r--scene/gui/popup_menu.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/scene/gui/popup_menu.cpp b/scene/gui/popup_menu.cpp
index 1923322c22..2414278e52 100644
--- a/scene/gui/popup_menu.cpp
+++ b/scene/gui/popup_menu.cpp
@@ -2424,7 +2424,8 @@ void PopupMenu::clear(bool p_free_submenus) {
}
if (!global_menu_name.is_empty()) {
- for (int i = 0; i < items.size(); i++) {
+ DisplayServer *ds = DisplayServer::get_singleton();
+ for (int i = items.size() - 1; i >= 0; i--) {
Item &item = items.write[i];
if (!item.submenu.is_empty()) {
PopupMenu *pm = Object::cast_to<PopupMenu>(get_node_or_null(item.submenu));
@@ -2433,8 +2434,8 @@ void PopupMenu::clear(bool p_free_submenus) {
}
item.submenu_bound = false;
}
+ ds->global_menu_remove_item(global_menu_name, i);
}
- DisplayServer::get_singleton()->global_menu_clear(global_menu_name);
}
items.clear();