-Fixed revert scene, should work proprely now, fixes #2782

This commit is contained in:
Juan Linietsky 2016-01-23 18:28:30 -03:00
parent 784a3eeb90
commit 5ca338bab6
3 changed files with 26 additions and 2 deletions

View File

@ -635,6 +635,16 @@ String EditorData::get_scene_type(int p_idx) const {
return edited_scene[p_idx].root->get_type();
}
void EditorData::move_edited_scene_to_index(int p_idx) {
ERR_FAIL_INDEX(current_edited_scene,edited_scene.size());
ERR_FAIL_INDEX(p_idx,edited_scene.size());
EditedScene es=edited_scene[current_edited_scene];
edited_scene.remove(current_edited_scene);
edited_scene.insert(p_idx,es);
current_edited_scene=p_idx;
}
Ref<Script> EditorData::get_scene_root_script(int p_idx) const {

View File

@ -196,6 +196,7 @@ public:
void set_edited_scene_live_edit_root(const NodePath& p_root);
NodePath get_edited_scene_live_edit_root();
bool check_and_update_scene(int p_idx);
void move_edited_scene_to_index(int p_idx);
void set_plugin_window_layout(Ref<ConfigFile> p_layout);

View File

@ -2367,7 +2367,14 @@ void EditorNode::_menu_option_confirm(int p_option,bool p_confirmed) {
if (!scene)
break;
String filename = scene->get_filename();
if (filename==String()) {
show_warning("Can't reload a scene that was never saved..");
break;
}
if (unsaved_cache && !p_confirmed) {
confirmation->get_ok()->set_text("Revert");
confirmation->set_text("This action cannot be undone. Revert anyway?");
@ -2375,7 +2382,13 @@ void EditorNode::_menu_option_confirm(int p_option,bool p_confirmed) {
break;
}
Error err = load_scene(scene->get_filename());
int cur_idx = editor_data.get_edited_scene();
_remove_edited_scene();
Error err = load_scene(filename);
editor_data.move_edited_scene_to_index(cur_idx);
get_undo_redo()->clear_history();
scene_tabs->set_current_tab(cur_idx);
} break;