Просмотр исходного кода

Fix FILE_MODE_OPEN_ANY file dialog not selecting folders.

Pāvels Nadtočajevs 9 месяцев назад
Родитель
Сommit
adceb32177
2 измененных файлов с 11 добавлено и 2 удалено
  1. 1 0
      doc/classes/FileDialog.xml
  2. 10 2
      scene/gui/file_dialog.cpp

+ 1 - 0
doc/classes/FileDialog.xml

@@ -151,6 +151,7 @@
 		<member name="mode_overrides_title" type="bool" setter="set_mode_overrides_title" getter="is_mode_overriding_title" default="true">
 			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").
 		</member>
+		<member name="ok_button_text" type="String" setter="set_ok_button_text" getter="get_ok_button_text" overrides="AcceptDialog" default="&quot;Save&quot;" />
 		<member name="option_count" type="int" setter="set_option_count" getter="get_option_count" default="0">
 			The number of additional [OptionButton]s and [CheckBox]es in the dialog.
 		</member>

+ 10 - 2
scene/gui/file_dialog.cpp

@@ -637,8 +637,10 @@ void FileDialog::deselect_all() {
 				set_ok_button_text(ETR("Select Current Folder"));
 				break;
 			case FILE_MODE_OPEN_ANY:
+				set_ok_button_text(ETR("Open"));
+				break;
 			case FILE_MODE_SAVE_FILE:
-				// FIXME: Implement, or refactor to avoid duplication with set_mode
+				set_ok_button_text(ETR("Save"));
 				break;
 		}
 	}
@@ -657,7 +659,13 @@ void FileDialog::_tree_selected() {
 
 	if (!d["dir"]) {
 		file->set_text(d["name"]);
-	} else if (mode == FILE_MODE_OPEN_DIR) {
+		if (mode == FILE_MODE_SAVE_FILE) {
+			set_ok_button_text(ETR("Save"));
+		} else {
+			set_ok_button_text(ETR("Open"));
+		}
+	} else if (mode == FILE_MODE_OPEN_DIR || mode == FILE_MODE_OPEN_ANY) {
+		file->set_text("");
 		set_ok_button_text(ETR("Select This Folder"));
 	}