From 0932e8d4b76a9018fc83c7de61c145debade6351 Mon Sep 17 00:00:00 2001 From: kobewi Date: Tue, 2 Dec 2025 16:15:37 +0100 Subject: [PATCH] Make OpenXRActionMapEditor into EditorDock --- editor/icons/OpenXRActionMap.svg | 1 + .../editor/openxr_action_map_editor.cpp | 19 ++++++++++++++----- .../openxr/editor/openxr_action_map_editor.h | 5 +++-- .../openxr/editor/openxr_editor_plugin.cpp | 5 ++--- 4 files changed, 20 insertions(+), 10 deletions(-) create mode 100644 editor/icons/OpenXRActionMap.svg diff --git a/editor/icons/OpenXRActionMap.svg b/editor/icons/OpenXRActionMap.svg new file mode 100644 index 00000000000..d78d900e140 --- /dev/null +++ b/editor/icons/OpenXRActionMap.svg @@ -0,0 +1 @@ + diff --git a/modules/openxr/editor/openxr_action_map_editor.cpp b/modules/openxr/editor/openxr_action_map_editor.cpp index 5a1ee61ad43..72cb7ed6d8b 100644 --- a/modules/openxr/editor/openxr_action_map_editor.cpp +++ b/modules/openxr/editor/openxr_action_map_editor.cpp @@ -33,8 +33,8 @@ #include "core/config/project_settings.h" #include "core/io/dir_access.h" #include "editor/editor_node.h" -#include "editor/gui/editor_bottom_panel.h" #include "editor/gui/editor_file_dialog.h" +#include "editor/settings/editor_command_palette.h" #include "editor/themes/editor_scale.h" HashMap OpenXRActionMapEditor::interaction_profile_editors; @@ -384,7 +384,7 @@ void OpenXRActionMapEditor::_do_remove_interaction_profile_editor(OpenXRInteract } void OpenXRActionMapEditor::open_action_map(const String &p_path) { - EditorNode::get_bottom_panel()->make_item_visible(this); + make_visible(); // out with the old... _clear_action_map(); @@ -430,11 +430,20 @@ String OpenXRActionMapEditor::get_binding_modifier_editor_class(const String &p_ } OpenXRActionMapEditor::OpenXRActionMapEditor() { - undo_redo = EditorUndoRedoManager::get_singleton(); + set_name(TTRC("OpenXR Action Map")); + set_icon_name("OpenXRActionMap"); + set_dock_shortcut(ED_SHORTCUT_AND_COMMAND("bottom_panels/toggle_openxr_action_map_bottom_panel", TTRC("Toggle OpenXR Action Map Dock"))); + set_default_slot(DockConstants::DOCK_SLOT_BOTTOM); + set_available_layouts(EditorDock::DOCK_LAYOUT_HORIZONTAL | EditorDock::DOCK_LAYOUT_FLOATING); set_custom_minimum_size(Size2(0.0, 300.0 * EDSCALE)); + undo_redo = EditorUndoRedoManager::get_singleton(); + + VBoxContainer *main_vb = memnew(VBoxContainer); + add_child(main_vb); + top_hb = memnew(HBoxContainer); - add_child(top_hb); + main_vb->add_child(top_hb); header_label = memnew(Label); header_label->set_text(String(TTR("Action Map"))); @@ -475,7 +484,7 @@ OpenXRActionMapEditor::OpenXRActionMapEditor() { tabs->set_theme_type_variation("TabContainerOdd"); tabs->connect("tab_changed", callable_mp(this, &OpenXRActionMapEditor::_on_tabs_tab_changed)); tabs->connect("tab_button_pressed", callable_mp(this, &OpenXRActionMapEditor::_on_tab_button_pressed)); - add_child(tabs); + main_vb->add_child(tabs); actionsets_scroll = memnew(ScrollContainer); actionsets_scroll->set_h_size_flags(SIZE_EXPAND_FILL); diff --git a/modules/openxr/editor/openxr_action_map_editor.h b/modules/openxr/editor/openxr_action_map_editor.h index ed7ad6c6bae..bfe511c052f 100644 --- a/modules/openxr/editor/openxr_action_map_editor.h +++ b/modules/openxr/editor/openxr_action_map_editor.h @@ -36,6 +36,7 @@ #include "openxr_select_interaction_profile_dialog.h" #include "core/templates/hash_map.h" +#include "editor/docks/editor_dock.h" #include "editor/editor_undo_redo_manager.h" #include "editor/plugins/editor_plugin.h" #include "scene/gui/box_container.h" @@ -44,8 +45,8 @@ #include "scene/gui/scroll_container.h" #include "scene/gui/tab_container.h" -class OpenXRActionMapEditor : public VBoxContainer { - GDCLASS(OpenXRActionMapEditor, VBoxContainer); +class OpenXRActionMapEditor : public EditorDock { + GDCLASS(OpenXRActionMapEditor, EditorDock); private: static HashMap interaction_profile_editors; // interaction profile path, interaction profile editor diff --git a/modules/openxr/editor/openxr_editor_plugin.cpp b/modules/openxr/editor/openxr_editor_plugin.cpp index 0e053881ef7..9042d4871a1 100644 --- a/modules/openxr/editor/openxr_editor_plugin.cpp +++ b/modules/openxr/editor/openxr_editor_plugin.cpp @@ -33,9 +33,8 @@ #include "../action_map/openxr_action_map.h" #include "../openxr_api.h" +#include "editor/docks/editor_dock_manager.h" #include "editor/editor_node.h" -#include "editor/gui/editor_bottom_panel.h" -#include "editor/settings/editor_command_palette.h" #include "platform/android/export/export_plugin.h" #include @@ -176,7 +175,7 @@ OpenXREditorPlugin::OpenXREditorPlugin() { // Only add our OpenXR action map editor if OpenXR is enabled for the whole project. if (OpenXRAPI::openxr_is_enabled(false)) { action_map_editor = memnew(OpenXRActionMapEditor); - EditorNode::get_bottom_panel()->add_item(TTRC("OpenXR Action Map"), action_map_editor, ED_SHORTCUT_AND_COMMAND("bottom_panels/toggle_openxr_action_map_bottom_panel", TTRC("Toggle OpenXR Action Map Bottom Panel"))); + EditorDockManager::get_singleton()->add_dock(action_map_editor); binding_modifier_inspector_plugin = Ref(memnew(EditorInspectorPluginBindingModifier)); EditorInspector::add_inspector_plugin(binding_modifier_inspector_plugin);