Skip to content

Commit b67b765

Browse files
committed
Merge pull request #111159 from KoBeWi/soon
Remaining FileDialog changes before unification
2 parents 7bdec67 + fdc79f5 commit b67b765

File tree

4 files changed

+23
-1
lines changed

4 files changed

+23
-1
lines changed

doc/classes/FileDialog.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,9 @@
246246
<member name="option_count" type="int" setter="set_option_count" getter="get_option_count" default="0">
247247
The number of additional [OptionButton]s and [CheckBox]es in the dialog.
248248
</member>
249+
<member name="overwrite_warning_enabled" type="bool" setter="set_customization_flag_enabled" getter="is_customization_flag_enabled" default="true">
250+
If [code]true[/code], the [FileDialog] will warn the user before overwriting files in save mode.
251+
</member>
249252
<member name="recent_list_enabled" type="bool" setter="set_customization_flag_enabled" getter="is_customization_flag_enabled" default="true">
250253
If [code]true[/code], shows the recent directories list on the left side of the dialog.
251254
</member>
@@ -352,6 +355,10 @@
352355
If enabled, shows the layout switch buttons (list/thumbnails).
353356
Equivalent to [member layout_toggle_enabled].
354357
</constant>
358+
<constant name="CUSTOMIZATION_OVERWRITE_WARNING" value="7" enum="Customization">
359+
If enabled, the [FileDialog] will warn the user before overwriting files in save mode.
360+
Equivalent to [member overwrite_warning_enabled].
361+
</constant>
355362
</constants>
356363
<theme_items>
357364
<theme_item name="file_disabled_color" data_type="color" type="Color" default="Color(1, 1, 1, 0.25)">

editor/editor_node.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -980,6 +980,7 @@ void EditorNode::_notification(int p_what) {
980980
case EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED: {
981981
if (EditorSettings::get_singleton()->check_changed_settings_in_group("filesystem/file_dialog")) {
982982
FileDialog::set_default_show_hidden_files(EDITOR_GET("filesystem/file_dialog/show_hidden_files"));
983+
FileDialog::set_default_display_mode(EDITOR_GET("filesystem/file_dialog/display_mode"));
983984
EditorFileDialog::set_default_show_hidden_files(EDITOR_GET("filesystem/file_dialog/show_hidden_files"));
984985
EditorFileDialog::set_default_display_mode((EditorFileDialog::DisplayMode)EDITOR_GET("filesystem/file_dialog/display_mode").operator int());
985986
}
@@ -7703,6 +7704,8 @@ EditorNode::EditorNode() {
77037704
DisplayServer::get_singleton()->window_set_min_size(minimum_size);
77047705
}
77057706

7707+
FileDialog::set_default_show_hidden_files(EDITOR_GET("filesystem/file_dialog/show_hidden_files"));
7708+
FileDialog::set_default_display_mode(EDITOR_GET("filesystem/file_dialog/display_mode"));
77067709
EditorFileDialog::set_default_show_hidden_files(EDITOR_GET("filesystem/file_dialog/show_hidden_files"));
77077710
EditorFileDialog::set_default_display_mode((EditorFileDialog::DisplayMode)EDITOR_GET("filesystem/file_dialog/display_mode").operator int());
77087711

scene/gui/file_dialog.cpp

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -540,7 +540,7 @@ void FileDialog::_action_pressed() {
540540
return;
541541
}
542542

543-
if (dir_access->file_exists(f) || dir_access->is_bundle(f)) {
543+
if (customization_flags[CUSTOMIZATION_OVERWRITE_WARNING] && (dir_access->file_exists(f) || dir_access->is_bundle(f))) {
544544
confirm_save->set_text(vformat(atr(ETR("File \"%s\" already exists.\nDo you want to overwrite it?")), f));
545545
confirm_save->popup_centered(Size2(250, 80));
546546
} else {
@@ -2057,6 +2057,7 @@ void FileDialog::_bind_methods() {
20572057
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "favorites_enabled"), "set_customization_flag_enabled", "is_customization_flag_enabled", CUSTOMIZATION_FAVORITES);
20582058
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "recent_list_enabled"), "set_customization_flag_enabled", "is_customization_flag_enabled", CUSTOMIZATION_RECENT);
20592059
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "layout_toggle_enabled"), "set_customization_flag_enabled", "is_customization_flag_enabled", CUSTOMIZATION_LAYOUT);
2060+
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "overwrite_warning_enabled"), "set_customization_flag_enabled", "is_customization_flag_enabled", CUSTOMIZATION_OVERWRITE_WARNING);
20602061

20612062
ADD_PROPERTY(PropertyInfo(Variant::STRING, "current_dir", PROPERTY_HINT_DIR, "", PROPERTY_USAGE_NONE), "set_current_dir", "get_current_dir");
20622063
ADD_PROPERTY(PropertyInfo(Variant::STRING, "current_file", PROPERTY_HINT_FILE_PATH, "*", PROPERTY_USAGE_NONE), "set_current_file", "get_current_file");
@@ -2087,6 +2088,7 @@ void FileDialog::_bind_methods() {
20872088
BIND_ENUM_CONSTANT(CUSTOMIZATION_FAVORITES);
20882089
BIND_ENUM_CONSTANT(CUSTOMIZATION_RECENT);
20892090
BIND_ENUM_CONSTANT(CUSTOMIZATION_LAYOUT);
2091+
BIND_ENUM_CONSTANT(CUSTOMIZATION_OVERWRITE_WARNING);
20902092

20912093
BIND_THEME_ITEM(Theme::DATA_TYPE_CONSTANT, FileDialog, thumbnail_size);
20922094
BIND_THEME_ITEM(Theme::DATA_TYPE_ICON, FileDialog, parent_folder);
@@ -2169,6 +2171,10 @@ void FileDialog::set_default_show_hidden_files(bool p_show) {
21692171
default_show_hidden_files = p_show;
21702172
}
21712173

2174+
void FileDialog::set_default_display_mode(DisplayMode p_mode) {
2175+
default_display_mode = p_mode;
2176+
}
2177+
21722178
void FileDialog::set_get_icon_callback(const Callable &p_callback) {
21732179
get_icon_callback = p_callback;
21742180
}
@@ -2209,6 +2215,7 @@ FileDialog::FileDialog() {
22092215
}
22102216

22112217
show_hidden_files = default_show_hidden_files;
2218+
display_mode = default_display_mode;
22122219
dir_access = DirAccess::create(DirAccess::ACCESS_RESOURCES);
22132220

22142221
main_vbox = memnew(VBoxContainer);
@@ -2315,6 +2322,7 @@ FileDialog::FileDialog() {
23152322
favorite_list = memnew(ItemList);
23162323
favorite_list->set_v_size_flags(Control::SIZE_EXPAND_FILL);
23172324
favorite_list->set_auto_translate_mode(AUTO_TRANSLATE_MODE_DISABLED);
2325+
favorite_list->set_theme_type_variation("ItemListSecondary");
23182326
favorite_list->set_accessibility_name(ETR("Favorites:"));
23192327
favorite_vbox->add_child(favorite_list);
23202328
favorite_list->connect(SceneStringName(item_selected), callable_mp(this, &FileDialog::_favorite_selected));
@@ -2331,6 +2339,7 @@ FileDialog::FileDialog() {
23312339
recent_list = memnew(ItemList);
23322340
recent_list->set_v_size_flags(Control::SIZE_EXPAND_FILL);
23332341
recent_list->set_auto_translate_mode(AUTO_TRANSLATE_MODE_DISABLED);
2342+
recent_list->set_theme_type_variation("ItemListSecondary");
23342343
recent_list->set_accessibility_name(ETR("Recent:"));
23352344
recent_vbox->add_child(recent_list);
23362345
recent_list->connect(SceneStringName(item_selected), callable_mp(this, &FileDialog::_recent_selected));

scene/gui/file_dialog.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,7 @@ class FileDialog : public ConfirmationDialog {
143143
CUSTOMIZATION_FAVORITES,
144144
CUSTOMIZATION_RECENT,
145145
CUSTOMIZATION_LAYOUT,
146+
CUSTOMIZATION_OVERWRITE_WARNING,
146147
CUSTOMIZATION_MAX
147148
};
148149

@@ -159,6 +160,7 @@ class FileDialog : public ConfirmationDialog {
159160
PropertyListHelper property_helper;
160161

161162
inline static bool default_show_hidden_files = false;
163+
static inline DisplayMode default_display_mode = DISPLAY_THUMBNAILS;
162164
bool show_hidden_files = false;
163165
bool use_native_dialog = false;
164166
bool customization_flags[CUSTOMIZATION_MAX]; // Initialized to true in the constructor.
@@ -432,6 +434,7 @@ class FileDialog : public ConfirmationDialog {
432434
bool get_show_filename_filter() const;
433435

434436
static void set_default_show_hidden_files(bool p_show);
437+
static void set_default_display_mode(DisplayMode p_mode);
435438

436439
static void set_get_icon_callback(const Callable &p_callback);
437440
static void set_get_thumbnail_callback(const Callable &p_callback);

0 commit comments

Comments
 (0)