From b4afdc95ea655af1e33c3a2570dfd8724634429d Mon Sep 17 00:00:00 2001 From: Kurt Hindenburg Date: Sat, 30 Jan 2010 14:25:13 +0000 Subject: [PATCH] Fix crash on removing key bindings. Patch by Dario Andres BUG: 183069 svn path=/trunk/KDE/kdebase/apps/konsole/; revision=1082422 --- src/KeyBindingEditor.cpp | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/KeyBindingEditor.cpp b/src/KeyBindingEditor.cpp index ca84928f2..b6701420b 100644 --- a/src/KeyBindingEditor.cpp +++ b/src/KeyBindingEditor.cpp @@ -71,12 +71,26 @@ KeyBindingEditor::~KeyBindingEditor() void KeyBindingEditor::removeSelectedEntry() { - QListIterator iter( _ui->keyBindingTable->selectedItems() ); + QList selectedList = _ui->keyBindingTable->selectedItems(); + QList uniqueList; + + //Filter unique items + QListIterator iter( selectedList ); + while ( iter.hasNext() ) + { + QTableWidgetItem* item = iter.next(); + if (item->column() == 1) //Select item at the first column + item = _ui->keyBindingTable->item(item->row(),0); + if ( !uniqueList.contains(item) ) + uniqueList.append(item); + } + + iter = QListIterator( uniqueList ); while ( iter.hasNext() ) { // get the first item in the row which has the entry - QTableWidgetItem* item = _ui->keyBindingTable->item(iter.next()->row(),0); + QTableWidgetItem* item = iter.next(); KeyboardTranslator::Entry existing = item->data(Qt::UserRole). value();