Merge pull request #113296 from KoBeWi/soft_open_gently

Fix dock opening focus
This commit is contained in:
Rémi Verschelde 2025-12-05 09:38:08 +01:00
commit 6b0a74073c
No known key found for this signature in database
GPG key ID: C3336907360768E1
4 changed files with 11 additions and 5 deletions

View file

@ -77,6 +77,7 @@
<return type="void" /> <return type="void" />
<description> <description>
Opens the dock. It will appear in the last used dock slot. If the dock has no default slot, it will be opened floating. 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].
</description> </description>
</method> </method>
</methods> </methods>

View file

@ -111,7 +111,7 @@ EditorDock::EditorDock() {
void EditorDock::open() { void EditorDock::open() {
if (!is_open) { if (!is_open) {
EditorDockManager::get_singleton()->open_dock(this); EditorDockManager::get_singleton()->open_dock(this, false);
} }
} }

View file

@ -373,7 +373,7 @@ void TileMapEditorPlugin::_update_tile_map() {
Ref<TileSet> tile_set = edited_layer->get_tile_set(); Ref<TileSet> tile_set = edited_layer->get_tile_set();
if (tile_set.is_valid() && tile_set_id != tile_set->get_instance_id()) { 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->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(); tile_set_id = tile_set->get_instance_id();
} else if (tile_set.is_null()) { } else if (tile_set.is_null()) {
tile_set_plugin_singleton->edit(nullptr); tile_set_plugin_singleton->edit(nullptr);
@ -410,7 +410,7 @@ void TileMapEditorPlugin::_edit_tile_map_layer(TileMapLayer *p_tile_map_layer, b
Ref<TileSet> tile_set = p_tile_map_layer->get_tile_set(); Ref<TileSet> tile_set = p_tile_map_layer->get_tile_set();
if (tile_set.is_valid()) { if (tile_set.is_valid()) {
tile_set_plugin_singleton->edit(tile_set.ptr()); 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(); tile_set_id = tile_set->get_instance_id();
} else { } else {
tile_set_plugin_singleton->edit(nullptr); tile_set_plugin_singleton->edit(nullptr);
@ -479,7 +479,7 @@ bool TileMapEditorPlugin::handles(Object *p_object) const {
void TileMapEditorPlugin::make_visible(bool p_visible) { void TileMapEditorPlugin::make_visible(bool p_visible) {
if (p_visible) { if (p_visible) {
editor->open(); editor->make_visible();
} else { } else {
editor->close(); editor->close();
TileSetEditor::get_singleton()->close(); TileSetEditor::get_singleton()->close();
@ -533,12 +533,16 @@ bool TileSetEditorPlugin::handles(Object *p_object) const {
void TileSetEditorPlugin::make_visible(bool p_visible) { void TileSetEditorPlugin::make_visible(bool p_visible) {
if (p_visible) { if (p_visible) {
editor->open(); editor->make_visible();
} else { } else {
editor->close(); editor->close();
} }
} }
void TileSetEditorPlugin::make_visible_no_focus() {
editor->open();
}
ObjectID TileSetEditorPlugin::get_edited_tileset() const { ObjectID TileSetEditorPlugin::get_edited_tileset() const {
return edited_tileset; return edited_tileset;
} }

View file

@ -165,6 +165,7 @@ public:
virtual bool handles(Object *p_object) const override; virtual bool handles(Object *p_object) const override;
virtual void make_visible(bool p_visible) override; virtual void make_visible(bool p_visible) override;
void make_visible_no_focus();
ObjectID get_edited_tileset() const; ObjectID get_edited_tileset() const;
TileSetEditorPlugin(); TileSetEditorPlugin();