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);