Merge pull request #29636 from Calinou/project-manager-dim-window-quitting
Dim the project manager window while it's quitting
This commit is contained in:
commit
006df1f2bc
2 changed files with 20 additions and 0 deletions
|
@ -961,9 +961,25 @@ void ProjectManager::_notification(int p_what) {
|
||||||
|
|
||||||
set_process_unhandled_input(is_visible_in_tree());
|
set_process_unhandled_input(is_visible_in_tree());
|
||||||
} break;
|
} break;
|
||||||
|
case NOTIFICATION_WM_QUIT_REQUEST: {
|
||||||
|
|
||||||
|
_dim_window();
|
||||||
|
} break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ProjectManager::_dim_window() {
|
||||||
|
|
||||||
|
// This method must be called before calling `get_tree()->quit()`.
|
||||||
|
// Otherwise, its effect won't be visible
|
||||||
|
|
||||||
|
// Dim the project manager window while it's quitting to make it clearer that it's busy.
|
||||||
|
// No transition is applied, as the effect needs to be visible immediately
|
||||||
|
float c = 1.0f - float(EDITOR_GET("interface/editor/dim_amount"));
|
||||||
|
Color dim_color = Color(c, c, c);
|
||||||
|
gui_base->set_modulate(dim_color);
|
||||||
|
}
|
||||||
|
|
||||||
void ProjectManager::_panel_draw(Node *p_hb) {
|
void ProjectManager::_panel_draw(Node *p_hb) {
|
||||||
|
|
||||||
HBoxContainer *hb = Object::cast_to<HBoxContainer>(p_hb);
|
HBoxContainer *hb = Object::cast_to<HBoxContainer>(p_hb);
|
||||||
|
@ -1514,6 +1530,7 @@ void ProjectManager::_open_selected_projects() {
|
||||||
ERR_FAIL_COND(err);
|
ERR_FAIL_COND(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_dim_window();
|
||||||
get_tree()->quit();
|
get_tree()->quit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1780,11 +1797,13 @@ void ProjectManager::_restart_confirm() {
|
||||||
Error err = OS::get_singleton()->execute(exec, args, false, &pid);
|
Error err = OS::get_singleton()->execute(exec, args, false, &pid);
|
||||||
ERR_FAIL_COND(err);
|
ERR_FAIL_COND(err);
|
||||||
|
|
||||||
|
_dim_window();
|
||||||
get_tree()->quit();
|
get_tree()->quit();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ProjectManager::_exit_dialog() {
|
void ProjectManager::_exit_dialog() {
|
||||||
|
|
||||||
|
_dim_window();
|
||||||
get_tree()->quit();
|
get_tree()->quit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -110,6 +110,7 @@ class ProjectManager : public Control {
|
||||||
|
|
||||||
void _install_project(const String &p_zip_path, const String &p_title);
|
void _install_project(const String &p_zip_path, const String &p_title);
|
||||||
|
|
||||||
|
void _dim_window();
|
||||||
void _panel_draw(Node *p_hb);
|
void _panel_draw(Node *p_hb);
|
||||||
void _panel_input(const Ref<InputEvent> &p_ev, Node *p_hb);
|
void _panel_input(const Ref<InputEvent> &p_ev, Node *p_hb);
|
||||||
void _unhandled_input(const Ref<InputEvent> &p_ev);
|
void _unhandled_input(const Ref<InputEvent> &p_ev);
|
||||||
|
|
Loading…
Reference in a new issue