diff libgui/src/main-window.cc @ 33352:c8dcba6e3ed8

make editor file dialogs modal * file-editor-tab.cc (save_file_as): file dialog not a pointer, make modal and show with exec(), get selected filter and files after exec returns without using signal/slot mechaninsm; (handle_save_as_filter_selected): removed slot; (handle_save_file_as_answer): removed slot; (handle_save_file_as_answer_close): removed slot; (handle_save_file_as_answer_cancel): removed slot; * file-editor-tab.h removed slots handle_save_file_as_answer, handle_save_file_as_answer_close, handle_save_file_as_answer_cancel, and handle_save_as_filter_selected * main-window.cc (request_open_file): do not use pointer for file dialog, use exec () and get selected files when exec return instead of using signal/slot mechanism; (request_open_files): remove slot * main-window.h: remove slot request_open_files
author Torsten Lilge <ttl-octave@mailbox.org>
date Sun, 07 Apr 2024 22:17:52 +0200
parents a29e8d52c4e8
children 689d4d069bbf
line wrap: on
line diff
--- a/libgui/src/main-window.cc	Sun Apr 07 13:33:33 2024 -0400
+++ b/libgui/src/main-window.cc	Sun Apr 07 22:17:52 2024 +0200
@@ -1381,25 +1381,25 @@
   if (is_internal)
     p = m_editor_window;
 
-  QFileDialog *fileDialog = new QFileDialog (p);
+  QFileDialog fileDialog (p);
 
   // FIXME: Remove, if for all common KDE versions (bug #54607) is resolved.
   if (! settings.bool_value (global_use_native_dialogs))
-    fileDialog->setOption(QFileDialog::DontUseNativeDialog);
-
-  fileDialog->setNameFilter (tr ("Octave Files (*.m);;All Files (*)"));
-
-  fileDialog->setAcceptMode (QFileDialog::AcceptOpen);
-  fileDialog->setViewMode (QFileDialog::Detail);
-  fileDialog->setFileMode (QFileDialog::ExistingFiles);
-  fileDialog->setDirectory (m_current_directory_combo_box->itemText (0));
-
-  connect (fileDialog, &QFileDialog::filesSelected,
-           this, &main_window::request_open_files);
-
-  fileDialog->setWindowModality (Qt::NonModal);
-  fileDialog->setAttribute (Qt::WA_DeleteOnClose);
-  fileDialog->show ();
+    fileDialog.setOption(QFileDialog::DontUseNativeDialog);
+
+  fileDialog.setNameFilter (tr ("Octave Files (*.m);;All Files (*)"));
+
+  fileDialog.setAcceptMode (QFileDialog::AcceptOpen);
+  fileDialog.setViewMode (QFileDialog::Detail);
+  fileDialog.setFileMode (QFileDialog::ExistingFiles);
+  fileDialog.setDirectory (m_current_directory_combo_box->itemText (0));
+
+  if (fileDialog.exec ())
+    {
+      QStringList open_file_names = fileDialog.selectedFiles();
+      for (int i = 0; i < open_file_names.count (); i++)
+        emit open_file_signal (open_file_names.at (i), m_file_encoding, -1);
+    }
 }
 
 // Create a new script
@@ -2013,16 +2013,6 @@
   m_file_encoding = new_encoding;
 }
 
-// The following slot is called after files have been selected in the
-// open file dialog, possibly with a new selected encoding stored in
-// m_file_encoding
-void
-main_window::request_open_files (const QStringList& open_file_names)
-{
-  for (int i = 0; i < open_file_names.count (); i++)
-    emit open_file_signal (open_file_names.at (i), m_file_encoding, -1);
-}
-
 void
 main_window::profiler_session ()
 {