From cea95e60048538bb4186e061a2800c9fa06e7015 Mon Sep 17 00:00:00 2001 From: kobewi Date: Fri, 28 Nov 2025 23:24:19 +0100 Subject: [PATCH] Fix dock opening focus --- doc/classes/EditorDock.xml | 1 + editor/docks/editor_dock.cpp | 2 +- editor/scene/2d/tiles/tiles_editor_plugin.cpp | 12 ++++++++---- editor/scene/2d/tiles/tiles_editor_plugin.h | 1 + 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/doc/classes/EditorDock.xml b/doc/classes/EditorDock.xml index 86457706cd2..bd10889a8a9 100644 --- a/doc/classes/EditorDock.xml +++ b/doc/classes/EditorDock.xml @@ -77,6 +77,7 @@ Opens the dock. It will appear in the last used dock slot. If the dock has no default slot, it will be opened floating. + [b]Note:[/b] This does not focus the dock. If you want to open and focus the dock, use [method make_visible]. diff --git a/editor/docks/editor_dock.cpp b/editor/docks/editor_dock.cpp index a38a2851805..1a29964cc23 100644 --- a/editor/docks/editor_dock.cpp +++ b/editor/docks/editor_dock.cpp @@ -105,7 +105,7 @@ EditorDock::EditorDock() { void EditorDock::open() { if (!is_open) { - EditorDockManager::get_singleton()->open_dock(this); + EditorDockManager::get_singleton()->open_dock(this, false); } } diff --git a/editor/scene/2d/tiles/tiles_editor_plugin.cpp b/editor/scene/2d/tiles/tiles_editor_plugin.cpp index d7ea5a19d80..8d59eccc5a4 100644 --- a/editor/scene/2d/tiles/tiles_editor_plugin.cpp +++ b/editor/scene/2d/tiles/tiles_editor_plugin.cpp @@ -374,7 +374,7 @@ void TileMapEditorPlugin::_update_tile_map() { Ref tile_set = edited_layer->get_tile_set(); if (tile_set.is_valid() && tile_set_id != tile_set->get_instance_id()) { tile_set_plugin_singleton->edit(tile_set.ptr()); - tile_set_plugin_singleton->make_visible(true); + tile_set_plugin_singleton->make_visible_no_focus(); tile_set_id = tile_set->get_instance_id(); } else if (tile_set.is_null()) { tile_set_plugin_singleton->edit(nullptr); @@ -411,7 +411,7 @@ void TileMapEditorPlugin::_edit_tile_map_layer(TileMapLayer *p_tile_map_layer, b Ref tile_set = p_tile_map_layer->get_tile_set(); if (tile_set.is_valid()) { tile_set_plugin_singleton->edit(tile_set.ptr()); - tile_set_plugin_singleton->make_visible(true); + tile_set_plugin_singleton->make_visible_no_focus(); tile_set_id = tile_set->get_instance_id(); } else { tile_set_plugin_singleton->edit(nullptr); @@ -480,7 +480,7 @@ bool TileMapEditorPlugin::handles(Object *p_object) const { void TileMapEditorPlugin::make_visible(bool p_visible) { if (p_visible) { - editor->open(); + editor->make_visible(); } else { editor->close(); } @@ -533,12 +533,16 @@ bool TileSetEditorPlugin::handles(Object *p_object) const { void TileSetEditorPlugin::make_visible(bool p_visible) { if (p_visible) { - editor->open(); + editor->make_visible(); } else { editor->close(); } } +void TileSetEditorPlugin::make_visible_no_focus() { + editor->open(); +} + ObjectID TileSetEditorPlugin::get_edited_tileset() const { return edited_tileset; } diff --git a/editor/scene/2d/tiles/tiles_editor_plugin.h b/editor/scene/2d/tiles/tiles_editor_plugin.h index b5c33253e88..de0645939c4 100644 --- a/editor/scene/2d/tiles/tiles_editor_plugin.h +++ b/editor/scene/2d/tiles/tiles_editor_plugin.h @@ -165,6 +165,7 @@ public: virtual bool handles(Object *p_object) const override; virtual void make_visible(bool p_visible) override; + void make_visible_no_focus(); ObjectID get_edited_tileset() const; TileSetEditorPlugin();