diff libgui/src/shortcut-manager.cc @ 19698:ff56a9899101

fix new shortcut dialog when applying new settings (fix #44196) * settings-dialog.cc (write_changed_settings): new boolean parameter whether settings dialog is closing or not, calling function for writing the shortcuts with this parameter; (button_clicked): calling write_changed_settings with new flag set to false when button with accept role was clicked * settings-dialog.h: write_changed_settings with boolean parameter * shortcut-manager.cc (do_write_shortcuts): delete shortcut dialog only if settings dialog is closing, setting to 0 after deletion; (do_import_export): call do_write_shortcuts with new flag * shortcut-manager.h: do_/write_shortcuts with new boolean parameter
author Torsten <ttl@justmail.de>
date Fri, 06 Feb 2015 22:55:01 +0100
parents 5d0663bff506
children 4197fc428c7d
line wrap: on
line diff
--- a/libgui/src/shortcut-manager.cc	Fri Feb 06 13:06:54 2015 -0500
+++ b/libgui/src/shortcut-manager.cc	Fri Feb 06 22:55:01 2015 +0100
@@ -419,7 +419,7 @@
 
 // write one or all actual shortcut set(s) into a settings file
 void
-shortcut_manager::do_write_shortcuts (int set, QSettings* settings)
+shortcut_manager::do_write_shortcuts (int set, QSettings* settings, bool closing)
 {
   if (set)
     {
@@ -442,7 +442,12 @@
           settings->setValue("shortcuts/"+_sc.at (i).settings_key+"_1",
                             _sc.at (i).actual_sc[1].toString ());
         }
-      delete _dialog;  // the dialog for key sequences can be removed now
+
+      if (closing)
+        {
+          delete _dialog;  // the dialog for key sequences can be removed now
+          _dialog = 0;     // make sure it is zero again
+        }
     }
 
   settings->sync ();    // sync the settings file
@@ -666,7 +671,7 @@
       if (import)
         import_shortcuts (set, osc_settings);   // import (special action)
       else
-        do_write_shortcuts (set, osc_settings); // export, like saving settings
+        do_write_shortcuts (set, osc_settings, false); // export, (saving settings)
     }
   else
     qWarning () << tr ("Failed to open %1 as octave shortcut file"). arg (file);