Project Manager: Fix and improve unhandled input

(cherry picked from commit f3a75a42dd)
This commit is contained in:
Ignacio Etcheverry 2016-08-05 16:06:16 +02:00 committed by Rémi Verschelde
parent 36eeedb357
commit d853eb2fb7

View file

@ -513,11 +513,11 @@ void ProjectManager::_panel_draw(Node *p_hb) {
void ProjectManager::_update_project_buttons() void ProjectManager::_update_project_buttons()
{ {
for(int i=0;i<scroll_childs->get_child_count();i++) { for(int i=0;i<scroll_childs->get_child_count();i++) {
CanvasItem *item = scroll_childs->get_child(i)->cast_to<CanvasItem>(); CanvasItem *item = scroll_childs->get_child(i)->cast_to<CanvasItem>();
item->update(); item->update();
} }
bool has_runnable_scene = false; bool has_runnable_scene = false;
for (Map<String,String>::Element *E=selected_list.front(); E; E=E->next()) { for (Map<String,String>::Element *E=selected_list.front(); E; E=E->next()) {
const String &selected_main = E->get(); const String &selected_main = E->get();
@ -528,7 +528,7 @@ void ProjectManager::_update_project_buttons()
erase_btn->set_disabled(selected_list.size()<1); erase_btn->set_disabled(selected_list.size()<1);
open_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) { 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) { switch (k.scancode) {
case KEY_RETURN: {
_open_project();
} break;
case KEY_HOME: { case KEY_HOME: {
for (int i=0; i<scroll_childs->get_child_count(); i++) { for (int i=0; i<scroll_childs->get_child_count(); i++) {
@ -608,6 +612,7 @@ void ProjectManager::_unhandled_input(const InputEvent& p_ev) {
selected_list.clear(); selected_list.clear();
selected_list.insert(hb->get_meta("name"), hb->get_meta("main_scene")); selected_list.insert(hb->get_meta("name"), hb->get_meta("main_scene"));
scroll->set_v_scroll(0); scroll->set_v_scroll(0);
_update_project_buttons();
break; break;
} }
} }
@ -622,6 +627,7 @@ void ProjectManager::_unhandled_input(const InputEvent& p_ev) {
selected_list.clear(); selected_list.clear();
selected_list.insert(hb->get_meta("name"), hb->get_meta("main_scene")); selected_list.insert(hb->get_meta("name"), hb->get_meta("main_scene"));
scroll->set_v_scroll(scroll_childs->get_size().y); scroll->set_v_scroll(scroll_childs->get_size().y);
_update_project_buttons();
break; break;
} }
} }
@ -652,6 +658,8 @@ void ProjectManager::_unhandled_input(const InputEvent& p_ev) {
if (offset_diff > 0) if (offset_diff > 0)
scroll->set_v_scroll(scroll->get_v_scroll() - offset_diff); scroll->set_v_scroll(scroll->get_v_scroll() - offset_diff);
_update_project_buttons();
break; break;
} else if (current==selected_list.back()->key()) { } else if (current==selected_list.back()->key()) {
@ -688,6 +696,8 @@ void ProjectManager::_unhandled_input(const InputEvent& p_ev) {
if (offset_diff > 0) if (offset_diff > 0)
scroll->set_v_scroll(scroll->get_v_scroll() + offset_diff); scroll->set_v_scroll(scroll->get_v_scroll() + offset_diff);
_update_project_buttons();
break; break;
} else if (current==selected_list.back()->key()) { } else if (current==selected_list.back()->key()) {
@ -708,12 +718,6 @@ void ProjectManager::_unhandled_input(const InputEvent& p_ev) {
if (scancode_handled) { if (scancode_handled) {
accept_event(); accept_event();
for(int i=0;i<scroll_childs->get_child_count();i++) {
CanvasItem *item = scroll_childs->get_child(i)->cast_to<CanvasItem>();
if (item)
item->update();
}
} }
} }
} }
@ -891,14 +895,14 @@ void ProjectManager::_load_recent_projects() {
scroll_childs->add_child(hb); scroll_childs->add_child(hb);
} }
for (Map<String,String>::Element *E = selected_list_copy.front();E;E = E->next()) { for (Map<String,String>::Element *E = selected_list_copy.front();E;E = E->next()) {
String key = E->key(); String key = E->key();
selected_list.erase(key); selected_list.erase(key);
} }
scroll->set_v_scroll(0); scroll->set_v_scroll(0);
_update_project_buttons(); _update_project_buttons();
EditorSettings::get_singleton()->save(); EditorSettings::get_singleton()->save();
@ -937,7 +941,7 @@ void ProjectManager::_open_project() {
} }
if (selected_list.size()>1) { 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(); multi_open_ask->popup_centered_minsize();
} else { } else {
_open_project_confirm(); _open_project_confirm();
@ -977,7 +981,7 @@ void ProjectManager::_run_project() {
} }
if (selected_list.size()>1) { 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(); multi_run_ask->popup_centered_minsize();
} else { } else {
_run_project_confirm(); _run_project_confirm();
@ -1361,9 +1365,9 @@ ProjectManager::ProjectManager() {
multi_run_ask = memnew( ConfirmationDialog ); multi_run_ask = memnew( ConfirmationDialog );
multi_run_ask->get_ok()->set_text(TTR("Run")); multi_run_ask->get_ok()->set_text(TTR("Run"));
multi_run_ask->get_ok()->connect("pressed", this, "_run_project_confirm"); multi_run_ask->get_ok()->connect("pressed", this, "_run_project_confirm");
gui_base->add_child(multi_run_ask); gui_base->add_child(multi_run_ask);
multi_scan_ask = memnew( ConfirmationDialog ); multi_scan_ask = memnew( ConfirmationDialog );
multi_scan_ask->get_ok()->set_text(TTR("Scan")); multi_scan_ask->get_ok()->set_text(TTR("Scan"));