From d853eb2fb72957d6389e1c4aa29323e8816c4e27 Mon Sep 17 00:00:00 2001 From: Ignacio Etcheverry Date: Fri, 5 Aug 2016 16:06:16 +0200 Subject: [PATCH] Project Manager: Fix and improve unhandled input (cherry picked from commit f3a75a42dda5ef9c2458f16757bf6e8b8a5d9e8f) --- tools/editor/project_manager.cpp | 36 ++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/tools/editor/project_manager.cpp b/tools/editor/project_manager.cpp index 5344de8fb29..dc1d6ec0f99 100644 --- a/tools/editor/project_manager.cpp +++ b/tools/editor/project_manager.cpp @@ -513,11 +513,11 @@ void ProjectManager::_panel_draw(Node *p_hb) { void ProjectManager::_update_project_buttons() { for(int i=0;iget_child_count();i++) { - + CanvasItem *item = scroll_childs->get_child(i)->cast_to(); item->update(); } - + bool has_runnable_scene = false; for (Map::Element *E=selected_list.front(); E; E=E->next()) { const String &selected_main = E->get(); @@ -528,7 +528,7 @@ void ProjectManager::_update_project_buttons() erase_btn->set_disabled(selected_list.size()<1); open_btn->set_disabled(selected_list.size()<1); - run_btn->set_disabled(!has_runnable_scene); + run_btn->set_disabled(!has_runnable_scene); } void ProjectManager::_panel_input(const InputEvent& p_ev,Node *p_hb) { @@ -599,6 +599,10 @@ void ProjectManager::_unhandled_input(const InputEvent& p_ev) { switch (k.scancode) { + case KEY_RETURN: { + + _open_project(); + } break; case KEY_HOME: { for (int i=0; iget_child_count(); i++) { @@ -608,6 +612,7 @@ void ProjectManager::_unhandled_input(const InputEvent& p_ev) { selected_list.clear(); selected_list.insert(hb->get_meta("name"), hb->get_meta("main_scene")); scroll->set_v_scroll(0); + _update_project_buttons(); break; } } @@ -622,6 +627,7 @@ void ProjectManager::_unhandled_input(const InputEvent& p_ev) { selected_list.clear(); selected_list.insert(hb->get_meta("name"), hb->get_meta("main_scene")); scroll->set_v_scroll(scroll_childs->get_size().y); + _update_project_buttons(); break; } } @@ -652,6 +658,8 @@ void ProjectManager::_unhandled_input(const InputEvent& p_ev) { if (offset_diff > 0) scroll->set_v_scroll(scroll->get_v_scroll() - offset_diff); + _update_project_buttons(); + break; } else if (current==selected_list.back()->key()) { @@ -688,6 +696,8 @@ void ProjectManager::_unhandled_input(const InputEvent& p_ev) { if (offset_diff > 0) scroll->set_v_scroll(scroll->get_v_scroll() + offset_diff); + _update_project_buttons(); + break; } else if (current==selected_list.back()->key()) { @@ -708,12 +718,6 @@ void ProjectManager::_unhandled_input(const InputEvent& p_ev) { if (scancode_handled) { accept_event(); - - for(int i=0;iget_child_count();i++) { - CanvasItem *item = scroll_childs->get_child(i)->cast_to(); - if (item) - item->update(); - } } } } @@ -891,14 +895,14 @@ 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); - + _update_project_buttons(); EditorSettings::get_singleton()->save(); @@ -937,7 +941,7 @@ void ProjectManager::_open_project() { } if (selected_list.size()>1) { - multi_open_ask->set_text(TTR("Are you sure to open more than one projects?")); + multi_open_ask->set_text(TTR("Are you sure to open more than one project?")); multi_open_ask->popup_centered_minsize(); } else { _open_project_confirm(); @@ -977,7 +981,7 @@ void ProjectManager::_run_project() { } if (selected_list.size()>1) { - multi_run_ask->set_text(TTR("Are you sure to run more than one projects?")); + multi_run_ask->set_text(TTR("Are you sure to run more than one project?")); multi_run_ask->popup_centered_minsize(); } else { _run_project_confirm(); @@ -1361,9 +1365,9 @@ ProjectManager::ProjectManager() { multi_run_ask = memnew( ConfirmationDialog ); multi_run_ask->get_ok()->set_text(TTR("Run")); multi_run_ask->get_ok()->connect("pressed", this, "_run_project_confirm"); - + gui_base->add_child(multi_run_ask); - + multi_scan_ask = memnew( ConfirmationDialog ); multi_scan_ask->get_ok()->set_text(TTR("Scan"));