diff libgui/src/settings-dialog.cc @ 26096:1002b49ce7b3

Make use of native file dialogs configurable (bug #54607). New qt option "use_native_file_dialogs" to control application of QFileDialog::DontUseNativeDialog: * libgui/src/dialog.cc (FileDialog): * libgui/src/files-dock-widget.cc (popdownmenu_search_dir): * libgui/src/find-files-dialog.cc (browse_folders): * libgui/src/m-editor/file-editor-tab.cc (save_file_as): * libgui/src/main-window.cc (handle_save_workspace_request, handle_load_workspace_request, browse_for_directory, request_open_file): * libgui/src/settings-dialog.cc (get_dir): * libgui/src/shortcut-manager.cc (do_import_export): * libgui/src/variable-editor.cc (save): New checkbox "cb_use_native_file_dialogs" associated with qt option "use_native_file_dialogs": * libgui/src/settings-dialog.cc (settings_dialog, write_changed_settings): * libgui/src/settings-dialog.ui:
author Kai T. Ohlhus <k.ohlhus@gmail.com>
date Sat, 17 Nov 2018 10:41:07 +0100
parents 38a881b8fbec
children a332d83cc659
line wrap: on
line diff
--- a/libgui/src/settings-dialog.cc	Fri Nov 16 19:52:35 2018 +0100
+++ b/libgui/src/settings-dialog.cc	Sat Nov 17 10:41:07 2018 +0100
@@ -190,8 +190,14 @@
     sb_3d_title->setValue (settings->value ("DockWidgets/widget_title_3d", 50).toInt ());
     cb_widget_custom_style->setChecked (settings->value ("DockWidgets/widget_title_custom_style", false).toBool ());
 
+    // Native file dialogs.
+    // FIXME: This preference can be deprecated / removed if all display
+    //       managers, especially KDE, run those dialogs without hangs or
+    //       delays from the start (bug #54607).
+    cb_use_native_file_dialogs->setChecked (settings->value ("use_native_file_dialogs", true).toBool ());
+
     // Cursor blinking: consider old terminal related setting if not yet set
-    // TODO: This pref. can be deprecated / removed if Qt adds support for
+    // FIXME: This pref. can be deprecated / removed if Qt adds support for
     //       getting the cursor blink preferences from all OS environments
     if (settings->contains ("cursor_blinking"))
       {
@@ -524,8 +530,14 @@
 
   void settings_dialog::get_dir (QLineEdit *line_edit, const QString& title)
   {
+    // FIXME: Remove, if for all common KDE versions (bug #54607) is resolved.
+    int opts = QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks;
+    if (! resource_manager::get_settings ()->value ("use_native_file_dialogs",
+                                                    true).toBool ())
+      opts |= QFileDialog::DontUseNativeDialog;
+
     QString dir = QFileDialog::getExistingDirectory
-      (this, title, line_edit->text (), QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);
+      (this, title, line_edit->text (), QFileDialog::Option (opts));
 
     line_edit->setText (dir);
   }
@@ -810,6 +822,9 @@
       icon_size = 1;
     settings->setValue ("toolbar_icon_size", icon_size);
 
+    // native file dialogs
+    settings->setValue ("use_native_file_dialogs", cb_use_native_file_dialogs->isChecked ());
+
     // cursor blinking
     settings->setValue ("cursor_blinking", cb_cursor_blinking->isChecked ());