Author: jghali
Date: Fri Feb 10 21:05:08 2017
New Revision: 21761

URL: http://scribus.net/websvn/listing.php?repname=Scribus&sc=1&rev=21761
Log:
#14615: Preferences: crash when trying to define shortcut on group entries

Modified:
    trunk/Scribus/scribus/ui/prefs_keyboardshortcuts.cpp

Modified: trunk/Scribus/scribus/ui/prefs_keyboardshortcuts.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=21761&path=/trunk/Scribus/scribus/ui/prefs_keyboardshortcuts.cpp
==============================================================================
--- trunk/Scribus/scribus/ui/prefs_keyboardshortcuts.cpp        (original)
+++ trunk/Scribus/scribus/ui/prefs_keyboardshortcuts.cpp        Fri Feb 10 
21:05:08 2017
@@ -416,9 +416,14 @@
 
 void Prefs_KeyboardShortcuts::dispKey(QTreeWidgetItem* qlvi, QTreeWidgetItem*)
 {
+       if (setKeyButton->isChecked())
+       {
+               releaseKeyboard();
+               setKeyButton->setChecked(false);
+       }
        if (qlvi!=0 && lviToActionMap.contains(qlvi))
        {
-               selectedLVI=qlvi;
+               selectedLVI = qlvi;
                QString actionName=lviToActionMap[qlvi];
                if (actionName.isEmpty())
                        return;
@@ -432,8 +437,12 @@
        {
                noKey->setChecked(true);
                keyDisplay->setText("");
-               selectedLVI=0;
-       }
+               selectedLVI = 0;
+       }
+       noKey->setEnabled(selectedLVI != 0);
+       userDef->setEnabled(selectedLVI != 0);
+       setKeyButton->setEnabled(selectedLVI != 0);
+       keyDisplay->setEnabled(selectedLVI != 0);
 }
 
 bool Prefs_KeyboardShortcuts::event( QEvent* ev )
@@ -468,21 +477,25 @@
                                keyCode |= k->key();
                                keyDisplay->setText(getTrKeyText(keyCode));
                                releaseKeyboard();
-                               if (checkKey(keyCode))
+                               if (selectedLVI)
                                {
-                                       ScMessageBox::information(this, 
CommonStrings::trWarning,
-                                                                               
        tr("The %1 key sequence is already in use by \"%2\"")
-                                                                               
                .arg(getTrKeyText(keyCode))
-                                                                               
                .arg(getAction(keyCode)));
-                                       
selectedLVI->setText(1,keyMap[lviToActionMap[selectedLVI]].keySequence.toString(QKeySequence::NativeText));
-                                       
keyDisplay->setText(keyMap[lviToActionMap[selectedLVI]].keySequence.toString(QKeySequence::NativeText));
-                               }
-                               else
-                               {
-                                       QKeySequence newKeySequence(keyCode);
-                                       selectedLVI->setText(1, 
newKeySequence.toString(QKeySequence::NativeText));
-                                       
keyMap[lviToActionMap[selectedLVI]].keySequence=newKeySequence;
-                                       userDef->setChecked(true);
+                                       QString actionName = 
lviToActionMap[selectedLVI];
+                                       if (checkKey(keyCode))
+                                       {
+                                               ScMessageBox::information(this, 
CommonStrings::trWarning,
+                                                                               
                tr("The %1 key sequence is already in use by \"%2\"")
+                                                                               
                        .arg(getTrKeyText(keyCode))
+                                                                               
                        .arg(getAction(keyCode)));
+                                               
selectedLVI->setText(1,keyMap[actionName].keySequence.toString(QKeySequence::NativeText));
+                                               
keyDisplay->setText(keyMap[actionName].keySequence.toString(QKeySequence::NativeText));
+                                       }
+                                       else
+                                       {
+                                               QKeySequence 
newKeySequence(keyCode);
+                                               selectedLVI->setText(1, 
newKeySequence.toString(QKeySequence::NativeText));
+                                               
keyMap[actionName].keySequence=newKeySequence;
+                                               userDef->setChecked(true);
+                                       }
                                }
                                setKeyButton->setChecked(false);
                }


_______________________________________________
scribus-commit mailing list
[email protected]
http://lists.scribus.net/mailman/listinfo/scribus-commit

Reply via email to