From 283530a70ba4c1a325dbd143f0c55e89b22f68df Mon Sep 17 00:00:00 2001 From: Dima Granetchi Date: Fri, 29 Jul 2016 03:33:59 +0300 Subject: keep selected_list up to date --- tools/editor/project_manager.cpp | 56 ++++++++++++++++++++++++---------------- tools/editor/project_manager.h | 1 + 2 files changed, 35 insertions(+), 22 deletions(-) diff --git a/tools/editor/project_manager.cpp b/tools/editor/project_manager.cpp index dd634e51ee..9ca69935da 100644 --- a/tools/editor/project_manager.cpp +++ b/tools/editor/project_manager.cpp @@ -510,6 +510,27 @@ void ProjectManager::_panel_draw(Node *p_hb) { } } +void ProjectManager::_update_project_buttons() +{ + String single_selected = ""; + if (selected_list.size() == 1) { + single_selected = selected_list.front()->key(); + } + + single_selected_main = ""; + for(int i=0;iget_child_count();i++) { + CanvasItem *item = scroll_childs->get_child(i)->cast_to(); + item->update(); + + if (single_selected!="" && single_selected == item->get_meta("name")) + single_selected_main = item->get_meta("main_scene"); + } + + erase_btn->set_disabled(selected_list.size()<1); + open_btn->set_disabled(selected_list.size()<1); + run_btn->set_disabled(selected_list.size()<1 || (selected_list.size()==1 && single_selected_main=="")); +} + void ProjectManager::_panel_input(const InputEvent& p_ev,Node *p_hb) { if (p_ev.type==InputEvent::MOUSE_BUTTON && p_ev.mouse_button.pressed && p_ev.mouse_button.button_index==BUTTON_LEFT) { @@ -557,23 +578,7 @@ void ProjectManager::_panel_input(const InputEvent& p_ev,Node *p_hb) { } } - String single_selected = ""; - if (selected_list.size() == 1) { - single_selected = selected_list.front()->key(); - } - - single_selected_main = ""; - for(int i=0;iget_child_count();i++) { - CanvasItem *item = scroll_childs->get_child(i)->cast_to(); - item->update(); - - if (single_selected!="" && single_selected == item->get_meta("name")) - single_selected_main = item->get_meta("main_scene"); - } - - erase_btn->set_disabled(selected_list.size()<1); - open_btn->set_disabled(selected_list.size()<1); - run_btn->set_disabled(selected_list.size()<1 || (selected_list.size()==1 && single_selected_main=="")); + _update_project_buttons(); if (p_ev.mouse_button.doubleclick) _open_project(); //open if doubleclicked @@ -739,6 +744,8 @@ void ProjectManager::_load_recent_projects() { memdelete( scroll_childs->get_child(0)); } + Map selected_list_copy = selected_list; + List properties; EditorSettings::get_singleton()->get_property_list(&properties); @@ -845,6 +852,8 @@ void ProjectManager::_load_recent_projects() { main_scene = cf->get_value("application","main_scene"); } + selected_list_copy.erase(project); + HBoxContainer *hb = memnew( HBoxContainer ); hb->set_meta("name",project); hb->set_meta("main_scene",main_scene); @@ -882,12 +891,15 @@ void ProjectManager::_load_recent_projects() { scroll_childs->add_child(hb); } - + + for (Map::Element *E = selected_list_copy.front();E;E = E->next()) { + String key = E->key(); + selected_list.erase(key); + } + scroll->set_v_scroll(0); - - erase_btn->set_disabled(selected_list.size()<1); - open_btn->set_disabled(selected_list.size()<1); - run_btn->set_disabled(selected_list.size()<1 || (selected_list.size()==1 && single_selected_main=="")); + + _update_project_buttons(); EditorSettings::get_singleton()->save(); diff --git a/tools/editor/project_manager.h b/tools/editor/project_manager.h index 74d1d3693c..fac1fc7745 100644 --- a/tools/editor/project_manager.h +++ b/tools/editor/project_manager.h @@ -82,6 +82,7 @@ class ProjectManager : public Control { void _new_project(); void _erase_project(); void _erase_project_confirm(); + void _update_project_buttons(); void _exit_dialog(); void _scan_begin(const String& p_base); -- cgit v1.2.3