summaryrefslogtreecommitdiffstats
path: root/scene/gui/file_dialog.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'scene/gui/file_dialog.cpp')
-rw-r--r--scene/gui/file_dialog.cpp44
1 files changed, 24 insertions, 20 deletions
diff --git a/scene/gui/file_dialog.cpp b/scene/gui/file_dialog.cpp
index d4da4797eb..d27a40779e 100644
--- a/scene/gui/file_dialog.cpp
+++ b/scene/gui/file_dialog.cpp
@@ -33,6 +33,7 @@
#include "core/os/keyboard.h"
#include "core/string/print_string.h"
#include "scene/gui/label.h"
+#include "scene/theme/theme_db.h"
FileDialog::GetIconFunc FileDialog::get_icon_func = nullptr;
@@ -90,26 +91,11 @@ VBoxContainer *FileDialog::get_vbox() {
return vbox;
}
-void FileDialog::_update_theme_item_cache() {
- ConfirmationDialog::_update_theme_item_cache();
-
- theme_cache.parent_folder = get_theme_icon(SNAME("parent_folder"));
- theme_cache.forward_folder = get_theme_icon(SNAME("forward_folder"));
- theme_cache.back_folder = get_theme_icon(SNAME("back_folder"));
- theme_cache.reload = get_theme_icon(SNAME("reload"));
- theme_cache.toggle_hidden = get_theme_icon(SNAME("toggle_hidden"));
- theme_cache.folder = get_theme_icon(SNAME("folder"));
- theme_cache.file = get_theme_icon(SNAME("file"));
-
- theme_cache.folder_icon_color = get_theme_color(SNAME("folder_icon_color"));
- theme_cache.file_icon_color = get_theme_color(SNAME("file_icon_color"));
- theme_cache.file_disabled_color = get_theme_color(SNAME("file_disabled_color"));
-
- // TODO: Define own colors?
- theme_cache.icon_normal_color = get_theme_color(SNAME("font_color"), SNAME("Button"));
- theme_cache.icon_hover_color = get_theme_color(SNAME("font_hover_color"), SNAME("Button"));
- theme_cache.icon_focus_color = get_theme_color(SNAME("font_focus_color"), SNAME("Button"));
- theme_cache.icon_pressed_color = get_theme_color(SNAME("font_pressed_color"), SNAME("Button"));
+void FileDialog::_validate_property(PropertyInfo &p_property) const {
+ if (p_property.name == "dialog_text") {
+ // File dialogs have a custom layout, and dialog nodes can't have both a text and a layout.
+ p_property.usage = PROPERTY_USAGE_NONE;
+ }
}
void FileDialog::_notification(int p_what) {
@@ -1042,6 +1028,24 @@ void FileDialog::_bind_methods() {
BIND_ENUM_CONSTANT(ACCESS_RESOURCES);
BIND_ENUM_CONSTANT(ACCESS_USERDATA);
BIND_ENUM_CONSTANT(ACCESS_FILESYSTEM);
+
+ BIND_THEME_ITEM(Theme::DATA_TYPE_ICON, FileDialog, parent_folder);
+ BIND_THEME_ITEM(Theme::DATA_TYPE_ICON, FileDialog, forward_folder);
+ BIND_THEME_ITEM(Theme::DATA_TYPE_ICON, FileDialog, back_folder);
+ BIND_THEME_ITEM(Theme::DATA_TYPE_ICON, FileDialog, reload);
+ BIND_THEME_ITEM(Theme::DATA_TYPE_ICON, FileDialog, toggle_hidden);
+ BIND_THEME_ITEM(Theme::DATA_TYPE_ICON, FileDialog, folder);
+ BIND_THEME_ITEM(Theme::DATA_TYPE_ICON, FileDialog, file);
+
+ BIND_THEME_ITEM(Theme::DATA_TYPE_COLOR, FileDialog, folder_icon_color);
+ BIND_THEME_ITEM(Theme::DATA_TYPE_COLOR, FileDialog, file_icon_color);
+ BIND_THEME_ITEM(Theme::DATA_TYPE_COLOR, FileDialog, file_disabled_color);
+
+ // TODO: Define own colors?
+ BIND_THEME_ITEM_EXT(Theme::DATA_TYPE_COLOR, FileDialog, icon_normal_color, "font_color", "Button");
+ BIND_THEME_ITEM_EXT(Theme::DATA_TYPE_COLOR, FileDialog, icon_hover_color, "font_hover_color", "Button");
+ BIND_THEME_ITEM_EXT(Theme::DATA_TYPE_COLOR, FileDialog, icon_focus_color, "font_focus_color", "Button");
+ BIND_THEME_ITEM_EXT(Theme::DATA_TYPE_COLOR, FileDialog, icon_pressed_color, "font_pressed_color", "Button");
}
void FileDialog::set_show_hidden_files(bool p_show) {