diff options
| author | Indah Sylvia <ISylvox@yahoo.com> | 2017-09-09 04:45:04 +0700 | 
|---|---|---|
| committer | Indah Sylvia <ISylvox@yahoo.com> | 2017-09-14 12:53:57 +0700 | 
| commit | 9e204658ff8d943e363cf3682e61ff01c1388805 (patch) | |
| tree | bdd354db97635118b7dee95e1d4066717dd64e6b | |
| parent | d1cb73b47a17de830d9474026ffa7b3587cfbc68 (diff) | |
Fixed Tab Switching of Main Scene State. Closes #11045
| -rw-r--r-- | editor/editor_node.cpp | 47 | 
1 files changed, 21 insertions, 26 deletions
diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp index 91d2ddcd19..73454eed04 100644 --- a/editor/editor_node.cpp +++ b/editor/editor_node.cpp @@ -2741,14 +2741,6 @@ Dictionary EditorNode::_get_main_scene_state() {  	state["property_edit_offset"] = get_property_editor()->get_scene_tree()->get_vscroll_bar()->get_value();  	state["saved_version"] = saved_version;  	state["node_filter"] = scene_tree_dock->get_filter(); -	int current = -1; -	for (int i = 0; i < editor_table.size(); i++) { -		if (editor_plugin_screen == editor_table[i]) { -			current = i; -			break; -		} -	} -	state["editor_index"] = current;  	return state;  } @@ -2759,29 +2751,32 @@ void EditorNode::_set_main_scene_state(Dictionary p_state, Node *p_for_scene) {  	changing_scene = false; -	if (p_state.has("editor_index")) { - -		int index = p_state["editor_index"]; -		int current = -1; -		for (int i = 0; i < editor_table.size(); i++) { -			if (editor_plugin_screen == editor_table[i]) { -				current = i; -				break; -			} +	int current = -1; +	for (int i = 0; i < editor_table.size(); i++) { +		if (editor_plugin_screen == editor_table[i]) { +			current = i; +			break;  		} +	} +	if (p_state.has("editor_index")) { +		int index = p_state["editor_index"];  		if (current < 2) { //if currently in spatial/2d, only switch to spatial/2d. if curently in script, stay there  			if (index < 2 || !get_edited_scene()) {  				_editor_select(index); -			} else { -				//use heuristic instead -				int n2d = 0, n3d = 0; -				_find_node_types(get_edited_scene(), n2d, n3d); -				if (n2d > n3d) { -					_editor_select(EDITOR_2D); -				} else if (n3d > n2d) { -					_editor_select(EDITOR_3D); -				} +			} +		} +	} + +	if (get_edited_scene()) { +		if (current < 2) { +			//use heuristic instead +			int n2d = 0, n3d = 0; +			_find_node_types(get_edited_scene(), n2d, n3d); +			if (n2d > n3d) { +				_editor_select(EDITOR_2D); +			} else if (n3d > n2d) { +				_editor_select(EDITOR_3D);  			}  		}  	}  |