diff options
author | Hugo Locurcio <hugo.locurcio@hugo.pro> | 2022-05-20 03:08:01 +0200 |
---|---|---|
committer | Hugo Locurcio <hugo.locurcio@hugo.pro> | 2022-05-20 16:32:29 +0200 |
commit | 9e64f3de6cdcaea43835643070810a2b175abe4c (patch) | |
tree | cbec1ffde2624196cc3f23d36516b9d9d984366e | |
parent | 920ca6252888489ca72647ad8d5ef721d5e5e686 (diff) |
Fix project manager display at small window sizes
- Don't use minimum size for project order/filter controls.
This also allows the filter field to become longer at large
window sizes.
- Hide the loading label instead of changing its opacity.
This causes a reflow during loading, but this is preferable to having
the UI overflow.
- Hide the About button on Android as it will spawn a dialog that's
too large to be closed on most screens.
- Hide the language dropdown on Android as it doesn't work correctly.
This allows the project manager to be displayed correctly at much
lower window sizes than previously.
-rw-r--r-- | editor/project_manager.cpp | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/editor/project_manager.cpp b/editor/project_manager.cpp index 967cb5a932..54e8d5487b 100644 --- a/editor/project_manager.cpp +++ b/editor/project_manager.cpp @@ -2095,7 +2095,7 @@ void ProjectManager::_confirm_update_settings() { void ProjectManager::_open_selected_projects() { // Show loading text to tell the user that the project manager is busy loading. // This is especially important for the HTML5 project manager. - loading_label->set_modulate(Color(1, 1, 1)); + loading_label->show(); const RBSet<String> &selected_list = _project_list->get_selected_project_keys(); @@ -2592,8 +2592,8 @@ ProjectManager::ProjectManager() { loading_label->add_theme_font_override("font", get_theme_font(SNAME("bold"), SNAME("EditorFonts"))); loading_label->set_h_size_flags(Control::SIZE_EXPAND_FILL); hb->add_child(loading_label); - // Hide the label but make it still take up space. This prevents reflows when showing the label. - loading_label->set_modulate(Color(0, 0, 0, 0)); + // The loading label is shown later. + loading_label->hide(); Label *sort_label = memnew(Label); sort_label->set_text(TTR("Sort:")); @@ -2601,7 +2601,7 @@ ProjectManager::ProjectManager() { filter_option = memnew(OptionButton); filter_option->set_clip_text(true); - filter_option->set_custom_minimum_size(Size2(150 * EDSCALE, 10 * EDSCALE)); + filter_option->set_h_size_flags(Control::SIZE_EXPAND_FILL); filter_option->connect("item_selected", callable_mp(this, &ProjectManager::_on_order_option_changed)); hb->add_child(filter_option); @@ -2727,6 +2727,12 @@ ProjectManager::ProjectManager() { language_btn->set_icon(get_theme_icon(SNAME("Environment"), SNAME("EditorIcons"))); language_btn->set_focus_mode(Control::FOCUS_NONE); language_btn->connect("item_selected", callable_mp(this, &ProjectManager::_language_selected)); +#ifdef ANDROID_ENABLED + // The language selection dropdown doesn't work on Android (as the setting isn't saved), see GH-60353. + // Also, the dropdown it spawns is very tall and can't be scrolled without a hardware mouse. + // Hiding the language selection dropdown also leaves more space for the version label to display. + language_btn->hide(); +#endif Vector<String> editor_languages; List<PropertyInfo> editor_settings_properties; @@ -2869,8 +2875,8 @@ ProjectManager::ProjectManager() { SceneTree::get_singleton()->get_root()->connect("files_dropped", callable_mp(this, &ProjectManager::_files_dropped)); - // Define a minimum window size to prevent UI elements from overlapping or being cut off - DisplayServer::get_singleton()->window_set_min_size(Size2(750, 420) * EDSCALE); + // Define a minimum window size to prevent UI elements from overlapping or being cut off. + DisplayServer::get_singleton()->window_set_min_size(Size2(520, 350) * EDSCALE); // Resize the bootsplash window based on Editor display scale EDSCALE. float scale_factor = MAX(1, EDSCALE); |