diff --git a/doc/classes/FileDialog.xml b/doc/classes/FileDialog.xml index aced51b906c..921fb0b7146 100644 --- a/doc/classes/FileDialog.xml +++ b/doc/classes/FileDialog.xml @@ -151,7 +151,6 @@ If [code]true[/code], changing the [member file_mode] property will set the window title accordingly (e.g. setting [member file_mode] to [constant FILE_MODE_OPEN_FILE] will change the window title to "Open a File"). - The number of additional [OptionButton]s and [CheckBox]es in the dialog. diff --git a/editor/editor_properties.cpp b/editor/editor_properties.cpp index 8f9607d7724..17fe0073644 100644 --- a/editor/editor_properties.cpp +++ b/editor/editor_properties.cpp @@ -223,9 +223,10 @@ EditorPropertyText::EditorPropertyText() { add_child(hb); text = memnew(LineEdit); + text->set_h_size_flags(SIZE_EXPAND_FILL); + text->set_auto_translate_mode(AUTO_TRANSLATE_MODE_DISABLED); // Prevents translating placeholder. hb->add_child(text); add_focusable(text); - text->set_h_size_flags(SIZE_EXPAND_FILL); text->connect(SceneStringName(text_changed), callable_mp(this, &EditorPropertyText::_text_changed)); text->connect(SceneStringName(text_submitted), callable_mp(this, &EditorPropertyText::_text_submitted)); } diff --git a/scene/gui/dialogs.cpp b/scene/gui/dialogs.cpp index 35df95facbb..31912aedf3c 100644 --- a/scene/gui/dialogs.cpp +++ b/scene/gui/dialogs.cpp @@ -261,7 +261,7 @@ void AcceptDialog::_update_child_rects() { void AcceptDialog::_update_ok_text() { String prev_text = ok_button->get_text(); - String new_text = internal_ok_text; + String new_text = default_ok_text; if (!ok_text.is_empty()) { new_text = ok_text; @@ -315,9 +315,13 @@ Size2 AcceptDialog::_get_contents_minimum_size() const { return content_minsize; } -void AcceptDialog::set_internal_ok_text(const String &p_text) { - internal_ok_text = p_text; +void AcceptDialog::set_default_ok_text(const String &p_text) { + if (default_ok_text == p_text) { + return; + } + default_ok_text = p_text; _update_ok_text(); + notify_property_list_changed(); } void AcceptDialog::_custom_action(const String &p_action) { @@ -441,7 +445,13 @@ void AcceptDialog::_bind_methods() { BIND_THEME_ITEM(Theme::DATA_TYPE_CONSTANT, AcceptDialog, buttons_min_height); } -bool AcceptDialog::swap_cancel_ok = false; +void AcceptDialog::_validate_property(PropertyInfo &p_property) const { + if (p_property.name == "ok_button_text") { + p_property.hint = PROPERTY_HINT_PLACEHOLDER_TEXT; + p_property.hint_string = default_ok_text; + } +} + void AcceptDialog::set_swap_cancel_ok(bool p_swap) { swap_cancel_ok = p_swap; } @@ -472,7 +482,7 @@ AcceptDialog::AcceptDialog() { buttons_hbox->add_spacer(); ok_button = memnew(Button); - set_internal_ok_text(ETR("OK")); + set_default_ok_text(ETR("OK")); buttons_hbox->add_child(ok_button); buttons_hbox->add_spacer(); diff --git a/scene/gui/dialogs.h b/scene/gui/dialogs.h index acc97c18009..f20d008e7f2 100644 --- a/scene/gui/dialogs.h +++ b/scene/gui/dialogs.h @@ -52,7 +52,7 @@ class AcceptDialog : public Window { bool popped_up = false; String ok_text; - String internal_ok_text; + String default_ok_text; bool hide_on_ok = true; bool close_on_escape = true; @@ -69,7 +69,7 @@ class AcceptDialog : public Window { void _update_child_rects(); void _update_ok_text(); - static bool swap_cancel_ok; + inline static bool swap_cancel_ok = false; void _parent_focused(); @@ -80,12 +80,13 @@ protected: void _notification(int p_what); static void _bind_methods(); + void _validate_property(PropertyInfo &p_property) const; virtual void ok_pressed() {} virtual void cancel_pressed() {} virtual void custom_action(const String &) {} - void set_internal_ok_text(const String &p_text); + void set_default_ok_text(const String &p_text); // Not private since used by derived classes signal. void _text_submitted(const String &p_text); diff --git a/scene/gui/file_dialog.cpp b/scene/gui/file_dialog.cpp index 276af1ca459..6c2c1386bb5 100644 --- a/scene/gui/file_dialog.cpp +++ b/scene/gui/file_dialog.cpp @@ -596,16 +596,16 @@ void FileDialog::deselect_all() { switch (mode) { case FILE_MODE_OPEN_FILE: case FILE_MODE_OPEN_FILES: - set_internal_ok_text(ETR("Open")); + set_default_ok_text(ETR("Open")); break; case FILE_MODE_OPEN_DIR: - set_internal_ok_text(ETR("Select Current Folder")); + set_default_ok_text(ETR("Select Current Folder")); break; case FILE_MODE_OPEN_ANY: - set_ok_button_text(ETR("Open")); + set_default_ok_text(ETR("Open")); break; case FILE_MODE_SAVE_FILE: - set_ok_button_text(ETR("Save")); + set_default_ok_text(ETR("Save")); break; } } @@ -629,14 +629,14 @@ void FileDialog::_file_list_selected(int p_item) { if (!d["dir"]) { filename_edit->set_text(d["name"]); if (mode == FILE_MODE_SAVE_FILE) { - set_internal_ok_text(ETR("Save")); + set_default_ok_text(ETR("Save")); } else { - set_internal_ok_text(ETR("Open")); + set_default_ok_text(ETR("Open")); } } else if (mode == FILE_MODE_OPEN_DIR || mode == FILE_MODE_OPEN_ANY || !dir_access->file_exists(filename_edit->get_text())) { filename_edit->set_text(""); if (mode == FILE_MODE_OPEN_DIR || mode == FILE_MODE_OPEN_ANY) { - set_internal_ok_text(ETR("Select This Folder")); + set_default_ok_text(ETR("Select This Folder")); } } @@ -1138,35 +1138,35 @@ void FileDialog::set_file_mode(FileMode p_mode) { mode = p_mode; switch (mode) { case FILE_MODE_OPEN_FILE: - set_internal_ok_text(ETR("Open")); + set_default_ok_text(ETR("Open")); if (mode_overrides_title) { set_title(ETR("Open a File")); } make_dir_button->hide(); break; case FILE_MODE_OPEN_FILES: - set_internal_ok_text(ETR("Open")); + set_default_ok_text(ETR("Open")); if (mode_overrides_title) { set_title(ETR("Open File(s)")); } make_dir_button->hide(); break; case FILE_MODE_OPEN_DIR: - set_internal_ok_text(ETR("Select Current Folder")); + set_default_ok_text(ETR("Select Current Folder")); if (mode_overrides_title) { set_title(ETR("Open a Directory")); } make_dir_button->show(); break; case FILE_MODE_OPEN_ANY: - set_internal_ok_text(ETR("Open")); + set_default_ok_text(ETR("Open")); if (mode_overrides_title) { set_title(ETR("Open a File or Directory")); } make_dir_button->show(); break; case FILE_MODE_SAVE_FILE: - set_internal_ok_text(ETR("Save")); + set_default_ok_text(ETR("Save")); if (mode_overrides_title) { set_title(ETR("Save a File")); } @@ -1644,7 +1644,7 @@ FileDialog::FileDialog() { set_title(ETR("Save a File")); set_hide_on_ok(false); set_size(Size2(640, 360)); - set_internal_ok_text(ETR("Save")); // Default mode text. + set_default_ok_text(ETR("Save")); // Default mode text. show_hidden_files = default_show_hidden_files; dir_access = DirAccess::create(DirAccess::ACCESS_RESOURCES);