From 1ef3bd57688024a53fd583248a4e4afb041c81aa Mon Sep 17 00:00:00 2001 From: Haoyu Qiu Date: Tue, 3 Dec 2024 09:43:12 +0800 Subject: [PATCH] Fix UI inconsistencies in EditorFileDialog's toolbar - Sort button has different stylebox compared to others - The top toolbar has a separator on the right side when in open mode - Update fav up/down buttons when fav list changes --- editor/gui/editor_file_dialog.cpp | 21 +++++++++++++-------- editor/gui/editor_file_dialog.h | 2 ++ 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/editor/gui/editor_file_dialog.cpp b/editor/gui/editor_file_dialog.cpp index 6f257f492d4..8ece6f5dfef 100644 --- a/editor/gui/editor_file_dialog.cpp +++ b/editor/gui/editor_file_dialog.cpp @@ -44,7 +44,6 @@ #include "scene/gui/check_box.h" #include "scene/gui/grid_container.h" #include "scene/gui/label.h" -#include "scene/gui/margin_container.h" #include "scene/gui/option_button.h" #include "scene/gui/separator.h" #include "scene/gui/split_container.h" @@ -1400,11 +1399,8 @@ void EditorFileDialog::set_file_mode(FileMode p_mode) { item_list->set_select_mode(ItemList::SELECT_SINGLE); } - if (can_create_dir) { - makedir->show(); - } else { - makedir->hide(); - } + makedir_sep->set_visible(can_create_dir); + makedir->set_visible(can_create_dir); } EditorFileDialog::FileMode EditorFileDialog::get_file_mode() const { @@ -1571,6 +1567,8 @@ void EditorFileDialog::_select_drive(int p_idx) { void EditorFileDialog::_update_drives(bool p_select) { int dc = dir_access->get_drive_count(); if (dc == 0 || access != ACCESS_FILESYSTEM) { + shortcuts_container->hide(); + drives_container->hide(); drives->hide(); } else { drives->clear(); @@ -1579,6 +1577,8 @@ void EditorFileDialog::_update_drives(bool p_select) { dp->remove_child(drives); } dp = dir_access->drives_are_shortcuts() ? shortcuts_container : drives_container; + shortcuts_container->set_visible(dir_access->drives_are_shortcuts()); + drives_container->set_visible(!dir_access->drives_are_shortcuts()); dp->add_child(drives); drives->show(); @@ -1768,6 +1768,9 @@ void EditorFileDialog::_update_favorites() { recent->deselect_all(); } } + + fav_up->set_disabled(current_favorite < 1); + fav_down->set_disabled(current_favorite == -1 || favorited_paths.size() - 1 <= current_favorite); } void EditorFileDialog::_favorite_pressed() { @@ -2354,7 +2357,8 @@ EditorFileDialog::EditorFileDialog() { drives->connect(SceneStringName(item_selected), callable_mp(this, &EditorFileDialog::_select_drive)); pathhb->add_child(drives); - pathhb->add_child(memnew(VSeparator)); + makedir_sep = memnew(VSeparator); + pathhb->add_child(makedir_sep); makedir = memnew(Button); makedir->set_theme_type_variation("FlatButton"); @@ -2473,7 +2477,8 @@ EditorFileDialog::EditorFileDialog() { lower_hb->add_child(memnew(VSeparator)); file_sort_button = memnew(MenuButton); - file_sort_button->set_flat(true); + file_sort_button->set_flat(false); + file_sort_button->set_theme_type_variation("FlatMenuButton"); file_sort_button->set_tooltip_text(TTR("Sort files")); show_search_filter_button = memnew(Button); diff --git a/editor/gui/editor_file_dialog.h b/editor/gui/editor_file_dialog.h index a151f2b38f7..8a07a209437 100644 --- a/editor/gui/editor_file_dialog.h +++ b/editor/gui/editor_file_dialog.h @@ -44,6 +44,7 @@ class MenuButton; class OptionButton; class PopupMenu; class TextureRect; +class VSeparator; class EditorFileDialog : public ConfirmationDialog { GDCLASS(EditorFileDialog, ConfirmationDialog); @@ -89,6 +90,7 @@ private: ConfirmationDialog *makedialog = nullptr; LineEdit *makedirname = nullptr; + VSeparator *makedir_sep = nullptr; Button *makedir = nullptr; Access access = ACCESS_RESOURCES;