mirror of
https://github.com/godotengine/godot.git
synced 2025-10-30 05:01:10 +00:00
Add submenu support to EditorContextMenuPlugin
This commit is contained in:
parent
e4e024ab88
commit
866c50a926
3 changed files with 39 additions and 3 deletions
|
|
@ -67,10 +67,21 @@ void EditorContextMenuPlugin::add_context_menu_item_from_shortcut(const String &
|
|||
context_menu_items.insert(p_name, item);
|
||||
}
|
||||
|
||||
void EditorContextMenuPlugin::add_context_submenu_item(const String &p_name, PopupMenu *p_menu, const Ref<Texture2D> &p_texture) {
|
||||
ERR_FAIL_NULL(p_menu);
|
||||
|
||||
ContextMenuItem item;
|
||||
item.item_name = p_name;
|
||||
item.icon = p_texture;
|
||||
item.submenu = p_menu;
|
||||
context_menu_items.insert(p_name, item);
|
||||
}
|
||||
|
||||
void EditorContextMenuPlugin::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("add_menu_shortcut", "shortcut", "callback"), &EditorContextMenuPlugin::add_menu_shortcut);
|
||||
ClassDB::bind_method(D_METHOD("add_context_menu_item", "name", "callback", "icon"), &EditorContextMenuPlugin::add_context_menu_item, DEFVAL(Ref<Texture2D>()));
|
||||
ClassDB::bind_method(D_METHOD("add_context_menu_item_from_shortcut", "name", "shortcut", "icon"), &EditorContextMenuPlugin::add_context_menu_item_from_shortcut, DEFVAL(Ref<Texture2D>()));
|
||||
ClassDB::bind_method(D_METHOD("add_context_submenu_item", "name", "menu", "icon"), &EditorContextMenuPlugin::add_context_submenu_item, DEFVAL(Ref<Texture2D>()));
|
||||
|
||||
GDVIRTUAL_BIND(_popup_menu, "paths");
|
||||
|
||||
|
|
@ -117,12 +128,17 @@ void EditorContextMenuPluginManager::add_options_from_plugins(PopupMenu *p_popup
|
|||
EditorContextMenuPlugin::ContextMenuItem &item = E.value;
|
||||
item.id = id;
|
||||
|
||||
if (item.icon.is_valid()) {
|
||||
p_popup->add_icon_item(item.icon, item.item_name, id);
|
||||
p_popup->set_item_icon_max_width(-1, icon_size);
|
||||
if (item.submenu) {
|
||||
p_popup->add_submenu_node_item(item.item_name, item.submenu, id);
|
||||
} else {
|
||||
p_popup->add_item(item.item_name, id);
|
||||
}
|
||||
|
||||
if (item.icon.is_valid()) {
|
||||
p_popup->set_item_icon(-1, item.icon);
|
||||
p_popup->set_item_icon_max_width(-1, icon_size);
|
||||
}
|
||||
|
||||
if (item.shortcut.is_valid()) {
|
||||
p_popup->set_item_shortcut(-1, item.shortcut, true);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue