浏览代码

Merge pull request #68210 from jmb462/3.x-fix-distraction-mode-docks-tab

[3.x] Fix docks to be reset to first tab when switching main tab
Rémi Verschelde 2 年之前
父节点
当前提交
5ea576234f
共有 2 个文件被更改,包括 8 次插入6 次删除
  1. 7 5
      editor/editor_node.cpp
  2. 1 1
      editor/editor_node.h

+ 7 - 5
editor/editor_node.cpp

@@ -4535,7 +4535,7 @@ void EditorNode::_load_docks() {
 	editor_data.set_plugin_window_layout(config);
 	editor_data.set_plugin_window_layout(config);
 }
 }
 
 
-void EditorNode::_update_dock_slots_visibility() {
+void EditorNode::_update_dock_slots_visibility(bool p_keep_selected_tabs) {
 	if (!docks_visible) {
 	if (!docks_visible) {
 		for (int i = 0; i < DOCK_SLOT_MAX; i++) {
 		for (int i = 0; i < DOCK_SLOT_MAX; i++) {
 			dock_slot[i]->hide();
 			dock_slot[i]->hide();
@@ -4570,9 +4570,11 @@ void EditorNode::_update_dock_slots_visibility() {
 			}
 			}
 		}
 		}
 
 
-		for (int i = 0; i < DOCK_SLOT_MAX; i++) {
-			if (dock_slot[i]->is_visible() && dock_slot[i]->get_tab_count()) {
-				dock_slot[i]->set_current_tab(0);
+		if (!p_keep_selected_tabs) {
+			for (int i = 0; i < DOCK_SLOT_MAX; i++) {
+				if (dock_slot[i]->is_visible() && dock_slot[i]->get_tab_count()) {
+					dock_slot[i]->set_current_tab(0);
+				}
 			}
 			}
 		}
 		}
 
 
@@ -5173,7 +5175,7 @@ void EditorNode::_bottom_panel_switch(bool p_enable, int p_idx) {
 
 
 void EditorNode::set_docks_visible(bool p_show) {
 void EditorNode::set_docks_visible(bool p_show) {
 	docks_visible = p_show;
 	docks_visible = p_show;
-	_update_dock_slots_visibility();
+	_update_dock_slots_visibility(true);
 }
 }
 
 
 bool EditorNode::get_docks_visible() const {
 bool EditorNode::get_docks_visible() const {

+ 1 - 1
editor/editor_node.h

@@ -616,7 +616,7 @@ private:
 	void _load_docks();
 	void _load_docks();
 	void _save_docks_to_config(Ref<ConfigFile> p_layout, const String &p_section);
 	void _save_docks_to_config(Ref<ConfigFile> p_layout, const String &p_section);
 	void _load_docks_from_config(Ref<ConfigFile> p_layout, const String &p_section);
 	void _load_docks_from_config(Ref<ConfigFile> p_layout, const String &p_section);
-	void _update_dock_slots_visibility();
+	void _update_dock_slots_visibility(bool p_keep_selected_tabs = false);
 	void _dock_tab_changed(int p_tab);
 	void _dock_tab_changed(int p_tab);
 
 
 	bool restoring_scenes;
 	bool restoring_scenes;