mirror of
https://github.com/godotengine/godot.git
synced 2025-10-19 16:03:29 +00:00
Merge pull request #100556 from KoBeWi/unlimited_contextizer
Add more menus support to EditorContextMenuPlugin
This commit is contained in:
commit
ce6c3c5c28
7 changed files with 93 additions and 3 deletions
|
@ -43,6 +43,7 @@
|
|||
#include "editor/gui/editor_toaster.h"
|
||||
#include "editor/gui/editor_zoom_widget.h"
|
||||
#include "editor/plugins/animation_player_editor_plugin.h"
|
||||
#include "editor/plugins/editor_context_menu_plugin.h"
|
||||
#include "editor/plugins/script_editor_plugin.h"
|
||||
#include "editor/scene_tree_dock.h"
|
||||
#include "editor/themes/editor_scale.h"
|
||||
|
@ -991,6 +992,19 @@ void CanvasItemEditor::_add_node_pressed(int p_result) {
|
|||
undo_redo->commit_action();
|
||||
_reset_create_position();
|
||||
} break;
|
||||
default: {
|
||||
if (p_result >= EditorContextMenuPlugin::BASE_ID) {
|
||||
TypedArray<Node> nodes;
|
||||
nodes.resize(selection_results.size());
|
||||
|
||||
int i = 0;
|
||||
for (const _SelectResult &result : selection_results) {
|
||||
nodes[i] = result.item;
|
||||
i++;
|
||||
}
|
||||
EditorContextMenuPluginManager::get_singleton()->activate_custom_option(EditorContextMenuPlugin::CONTEXT_SLOT_2D_EDITOR, p_result, nodes);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2461,6 +2475,21 @@ bool CanvasItemEditor::_gui_input_select(const Ref<InputEvent> &p_event) {
|
|||
}
|
||||
}
|
||||
|
||||
// Context menu plugin receives paths of nodes under cursor. It's a complex operation, so perform it only when necessary.
|
||||
if (EditorContextMenuPluginManager::get_singleton()->has_plugins_for_slot(EditorContextMenuPlugin::CONTEXT_SLOT_2D_EDITOR)) {
|
||||
selection_results.clear();
|
||||
_get_canvas_items_at_pos(transform.affine_inverse().xform(viewport->get_local_mouse_position()), selection_results, true);
|
||||
|
||||
PackedStringArray paths;
|
||||
paths.resize(selection_results.size());
|
||||
String *paths_write = paths.ptrw();
|
||||
|
||||
for (int i = 0; i < paths.size(); i++) {
|
||||
paths_write[i] = selection_results[i].item->get_path();
|
||||
}
|
||||
EditorContextMenuPluginManager::get_singleton()->add_options_from_plugins(add_node_menu, EditorContextMenuPlugin::CONTEXT_SLOT_2D_EDITOR, paths);
|
||||
}
|
||||
|
||||
add_node_menu->reset_size();
|
||||
add_node_menu->set_position(viewport->get_screen_transform().xform(b->get_position()));
|
||||
add_node_menu->popup();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue