From 251a7a067b8fdb63c81c827b021c3808379d2f92 Mon Sep 17 00:00:00 2001 From: Marqin Date: Tue, 23 Sep 2014 01:12:44 +0200 Subject: [PATCH] Fix File->Save As in Script panel --- tools/editor/resources_dock.cpp | 67 ++++++++++----------------------- 1 file changed, 20 insertions(+), 47 deletions(-) diff --git a/tools/editor/resources_dock.cpp b/tools/editor/resources_dock.cpp index a05fe425b3..495225b91e 100644 --- a/tools/editor/resources_dock.cpp +++ b/tools/editor/resources_dock.cpp @@ -69,36 +69,8 @@ void ResourcesDock::_tool_selected(int p_tool) { TreeItem *ti = resources->get_selected(); if (!ti) break; - Ref current_res = ti->get_metadata(0); - RES res(current_res); - - List extensions; - ResourceSaver::get_recognized_extensions(res,&extensions); - file->set_mode(FileDialog::MODE_SAVE_FILE); - //not for now? - - if (current_res->get_path()!="" && current_res->get_path().find("::")==-1) { - - file->set_current_path(current_res->get_path()); - } else { - - String existing; - if (extensions.size()) { - existing="new_"+res->get_type().to_lower()+"."+extensions.front()->get().to_lower(); - } - - file->set_current_file(existing); - } - - file->clear_filters(); - for(int i=0;iadd_filter("*."+extensions[i]+" ; "+extensions[i].to_upper()); - } - - //file->set_current_path(current_path); - file->popup_centered_ratio(); + save_resource_as(ti->get_metadata(0)); } break; @@ -174,33 +146,34 @@ void ResourcesDock::save_resource(const String& p_path,const Ref& p_re void ResourcesDock::save_resource_as(const Ref& p_resource) { + current_action=TOOL_SAVE_AS; - add_resource(p_resource); - TreeItem *root=resources->get_root(); - ERR_FAIL_COND(!root); + RES res(p_resource); - TreeItem *existing=root->get_children(); + List extensions; + ResourceSaver::get_recognized_extensions(res,&extensions); + file->set_mode(FileDialog::MODE_SAVE_FILE); - while(existing) { + if (p_resource->get_path()!="" && p_resource->get_path().find("::")==-1) { - Ref r = existing->get_metadata(0); - if (r==p_resource) { - //existing->move_to_top(); - existing->select(0); - resources->ensure_cursor_is_visible(); - return; // existing + file->set_current_path(p_resource->get_path()); + } else { + + String existing; + if (extensions.size()) { + existing="new_"+res->get_type().to_lower()+"."+extensions.front()->get().to_lower(); } - existing=existing->get_next(); + + file->set_current_file(existing); } - ERR_FAIL_COND(!existing); - - existing->select(0); - - _tool_selected(TOOL_SAVE_AS); - + file->clear_filters(); + for(int i=0;iadd_filter("*."+extensions[i]+" ; "+extensions[i].to_upper()); + } + file->popup_centered_ratio(); }