Skip to content

Commit 076608c

Browse files
committed
Improve default OK text in AcceptDialog
1 parent 428a762 commit 076608c

File tree

5 files changed

+34
-23
lines changed

5 files changed

+34
-23
lines changed

doc/classes/FileDialog.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,6 @@
151151
<member name="mode_overrides_title" type="bool" setter="set_mode_overrides_title" getter="is_mode_overriding_title" default="true">
152152
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").
153153
</member>
154-
<member name="ok_button_text" type="String" setter="set_ok_button_text" getter="get_ok_button_text" overrides="AcceptDialog" default="&quot;Save&quot;" />
155154
<member name="option_count" type="int" setter="set_option_count" getter="get_option_count" default="0">
156155
The number of additional [OptionButton]s and [CheckBox]es in the dialog.
157156
</member>

editor/editor_properties.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -223,9 +223,10 @@ EditorPropertyText::EditorPropertyText() {
223223
add_child(hb);
224224

225225
text = memnew(LineEdit);
226+
text->set_h_size_flags(SIZE_EXPAND_FILL);
227+
text->set_auto_translate_mode(AUTO_TRANSLATE_MODE_DISABLED); // Prevents translating placeholder.
226228
hb->add_child(text);
227229
add_focusable(text);
228-
text->set_h_size_flags(SIZE_EXPAND_FILL);
229230
text->connect(SceneStringName(text_changed), callable_mp(this, &EditorPropertyText::_text_changed));
230231
text->connect(SceneStringName(text_submitted), callable_mp(this, &EditorPropertyText::_text_submitted));
231232
}

scene/gui/dialogs.cpp

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,7 @@ void AcceptDialog::_update_child_rects() {
261261

262262
void AcceptDialog::_update_ok_text() {
263263
String prev_text = ok_button->get_text();
264-
String new_text = internal_ok_text;
264+
String new_text = default_ok_text;
265265

266266
if (!ok_text.is_empty()) {
267267
new_text = ok_text;
@@ -315,9 +315,13 @@ Size2 AcceptDialog::_get_contents_minimum_size() const {
315315
return content_minsize;
316316
}
317317

318-
void AcceptDialog::set_internal_ok_text(const String &p_text) {
319-
internal_ok_text = p_text;
318+
void AcceptDialog::set_default_ok_text(const String &p_text) {
319+
if (default_ok_text == p_text) {
320+
return;
321+
}
322+
default_ok_text = p_text;
320323
_update_ok_text();
324+
notify_property_list_changed();
321325
}
322326

323327
void AcceptDialog::_custom_action(const String &p_action) {
@@ -441,7 +445,13 @@ void AcceptDialog::_bind_methods() {
441445
BIND_THEME_ITEM(Theme::DATA_TYPE_CONSTANT, AcceptDialog, buttons_min_height);
442446
}
443447

444-
bool AcceptDialog::swap_cancel_ok = false;
448+
void AcceptDialog::_validate_property(PropertyInfo &p_property) const {
449+
if (p_property.name == "ok_button_text") {
450+
p_property.hint = PROPERTY_HINT_PLACEHOLDER_TEXT;
451+
p_property.hint_string = default_ok_text;
452+
}
453+
}
454+
445455
void AcceptDialog::set_swap_cancel_ok(bool p_swap) {
446456
swap_cancel_ok = p_swap;
447457
}
@@ -472,7 +482,7 @@ AcceptDialog::AcceptDialog() {
472482

473483
buttons_hbox->add_spacer();
474484
ok_button = memnew(Button);
475-
set_internal_ok_text(ETR("OK"));
485+
set_default_ok_text(ETR("OK"));
476486
buttons_hbox->add_child(ok_button);
477487
buttons_hbox->add_spacer();
478488

scene/gui/dialogs.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ class AcceptDialog : public Window {
5252

5353
bool popped_up = false;
5454
String ok_text;
55-
String internal_ok_text;
55+
String default_ok_text;
5656

5757
bool hide_on_ok = true;
5858
bool close_on_escape = true;
@@ -69,7 +69,7 @@ class AcceptDialog : public Window {
6969
void _update_child_rects();
7070
void _update_ok_text();
7171

72-
static bool swap_cancel_ok;
72+
inline static bool swap_cancel_ok = false;
7373

7474
void _parent_focused();
7575

@@ -80,12 +80,13 @@ class AcceptDialog : public Window {
8080

8181
void _notification(int p_what);
8282
static void _bind_methods();
83+
void _validate_property(PropertyInfo &p_property) const;
8384

8485
virtual void ok_pressed() {}
8586
virtual void cancel_pressed() {}
8687
virtual void custom_action(const String &) {}
8788

88-
void set_internal_ok_text(const String &p_text);
89+
void set_default_ok_text(const String &p_text);
8990

9091
// Not private since used by derived classes signal.
9192
void _text_submitted(const String &p_text);

scene/gui/file_dialog.cpp

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -596,16 +596,16 @@ void FileDialog::deselect_all() {
596596
switch (mode) {
597597
case FILE_MODE_OPEN_FILE:
598598
case FILE_MODE_OPEN_FILES:
599-
set_internal_ok_text(ETR("Open"));
599+
set_default_ok_text(ETR("Open"));
600600
break;
601601
case FILE_MODE_OPEN_DIR:
602-
set_internal_ok_text(ETR("Select Current Folder"));
602+
set_default_ok_text(ETR("Select Current Folder"));
603603
break;
604604
case FILE_MODE_OPEN_ANY:
605-
set_ok_button_text(ETR("Open"));
605+
set_default_ok_text(ETR("Open"));
606606
break;
607607
case FILE_MODE_SAVE_FILE:
608-
set_ok_button_text(ETR("Save"));
608+
set_default_ok_text(ETR("Save"));
609609
break;
610610
}
611611
}
@@ -629,14 +629,14 @@ void FileDialog::_file_list_selected(int p_item) {
629629
if (!d["dir"]) {
630630
filename_edit->set_text(d["name"]);
631631
if (mode == FILE_MODE_SAVE_FILE) {
632-
set_internal_ok_text(ETR("Save"));
632+
set_default_ok_text(ETR("Save"));
633633
} else {
634-
set_internal_ok_text(ETR("Open"));
634+
set_default_ok_text(ETR("Open"));
635635
}
636636
} else if (mode == FILE_MODE_OPEN_DIR || mode == FILE_MODE_OPEN_ANY || !dir_access->file_exists(filename_edit->get_text())) {
637637
filename_edit->set_text("");
638638
if (mode == FILE_MODE_OPEN_DIR || mode == FILE_MODE_OPEN_ANY) {
639-
set_internal_ok_text(ETR("Select This Folder"));
639+
set_default_ok_text(ETR("Select This Folder"));
640640
}
641641
}
642642

@@ -1138,35 +1138,35 @@ void FileDialog::set_file_mode(FileMode p_mode) {
11381138
mode = p_mode;
11391139
switch (mode) {
11401140
case FILE_MODE_OPEN_FILE:
1141-
set_internal_ok_text(ETR("Open"));
1141+
set_default_ok_text(ETR("Open"));
11421142
if (mode_overrides_title) {
11431143
set_title(ETR("Open a File"));
11441144
}
11451145
make_dir_button->hide();
11461146
break;
11471147
case FILE_MODE_OPEN_FILES:
1148-
set_internal_ok_text(ETR("Open"));
1148+
set_default_ok_text(ETR("Open"));
11491149
if (mode_overrides_title) {
11501150
set_title(ETR("Open File(s)"));
11511151
}
11521152
make_dir_button->hide();
11531153
break;
11541154
case FILE_MODE_OPEN_DIR:
1155-
set_internal_ok_text(ETR("Select Current Folder"));
1155+
set_default_ok_text(ETR("Select Current Folder"));
11561156
if (mode_overrides_title) {
11571157
set_title(ETR("Open a Directory"));
11581158
}
11591159
make_dir_button->show();
11601160
break;
11611161
case FILE_MODE_OPEN_ANY:
1162-
set_internal_ok_text(ETR("Open"));
1162+
set_default_ok_text(ETR("Open"));
11631163
if (mode_overrides_title) {
11641164
set_title(ETR("Open a File or Directory"));
11651165
}
11661166
make_dir_button->show();
11671167
break;
11681168
case FILE_MODE_SAVE_FILE:
1169-
set_internal_ok_text(ETR("Save"));
1169+
set_default_ok_text(ETR("Save"));
11701170
if (mode_overrides_title) {
11711171
set_title(ETR("Save a File"));
11721172
}
@@ -1644,7 +1644,7 @@ FileDialog::FileDialog() {
16441644
set_title(ETR("Save a File"));
16451645
set_hide_on_ok(false);
16461646
set_size(Size2(640, 360));
1647-
set_internal_ok_text(ETR("Save")); // Default mode text.
1647+
set_default_ok_text(ETR("Save")); // Default mode text.
16481648

16491649
show_hidden_files = default_show_hidden_files;
16501650
dir_access = DirAccess::create(DirAccess::ACCESS_RESOURCES);

0 commit comments

Comments
 (0)