D15743: Fix removal of external scripts
Amish Naidu
noreply at phabricator.kde.org
Thu Sep 27 06:28:45 BST 2018
amhndu added a comment.
Patch to move the key set as a member:
diff --git a/plugins/externalscript/externalscriptplugin.cpp b/plugins/externalscript/externalscriptplugin.cpp
index e1009457c8..3f2bddeeff 100644
--- a/plugins/externalscript/externalscriptplugin.cpp
+++ b/plugins/externalscript/externalscriptplugin.cpp
@@ -120,6 +120,7 @@ ExternalScriptPlugin::ExternalScriptPlugin( QObject* parent, const QVariantList&
item->action()->setShortcut( QKeySequence( script.readEntry( "shortcuts" ) ) );
item->setShowOutput( script.readEntry( "showOutput", true ) );
m_model->appendRow( item );
+ m_keySet.insert( script.name() );
}
}
//END load config
@@ -350,6 +351,7 @@ void ExternalScriptPlugin::rowsAboutToBeRemoved( const QModelIndex& /*parent*/,
const ExternalScriptItem* const item = static_cast<ExternalScriptItem*>( m_model->item( row ) );
KConfigGroup child = config.group( item->key() );
qCDebug(PLUGIN_EXTERNALSCRIPT) << "removing config group:" << child.name();
+ m_keySet.remove( item->key() );
child.deleteGroup();
}
config.sync();
@@ -361,7 +363,10 @@ void ExternalScriptPlugin::updateItem( const ExternalScriptItem* item )
Q_ASSERT( index.isValid() );
getConfig().group( item->key() ).deleteGroup(); // delete the previous group
+ m_keySet.remove( item->key() );
+
setupKeys( index.row(), index.row() );
+
saveItemForRow( index.row() ); // save the new group
}
@@ -389,28 +394,18 @@ void ExternalScriptPlugin::saveItemForRow( int row )
void ExternalScriptPlugin::setupKeys(int start, int end)
{
- QSet<QString> keySet;
- for ( int row = 0; row < m_model->rowCount(); ++row ) {
- if (row == start) {
- row = end;
- } else {
- const ExternalScriptItem* const item = static_cast<ExternalScriptItem*>( m_model->item( row ) );
- keySet.insert( item->key() );
- }
- }
-
for ( int row = start; row <= end; ++row ) {
ExternalScriptItem* const item = static_cast<ExternalScriptItem*>( m_model->item( row ) );
- int maxSuffix = 0;
- QString keyCandidate = item->text() + QString::number( maxSuffix );
- for (; keySet.contains( keyCandidate ); ++maxSuffix) {
- keyCandidate = item->text() + QString::number( maxSuffix);
+ int nextSuffix = 0;
+ QString keyCandidate = keyCandidate = item->text() + QString::number( nextSuffix );
+ for ( ++nextSuffix; m_keySet.contains( keyCandidate ); ++nextSuffix ) {
+ keyCandidate = item->text() + QString::number( nextSuffix );
}
qCDebug(PLUGIN_EXTERNALSCRIPT) << "set key" << keyCandidate << "for" << item << item->command();
item->setKey(keyCandidate);
- keySet.insert(keyCandidate);
+ m_keySet.insert(keyCandidate);
}
}
diff --git a/plugins/externalscript/externalscriptplugin.h b/plugins/externalscript/externalscriptplugin.h
index 068efc2de7..4c7ed73d12 100644
--- a/plugins/externalscript/externalscriptplugin.h
+++ b/plugins/externalscript/externalscriptplugin.h
@@ -26,6 +26,7 @@
#include <QVariantList>
#include <KConfigGroup>
#include <QUrl>
+#include <QSet>
class ExternalScriptItem;
@@ -101,6 +102,7 @@ private:
QStandardItemModel* m_model;
QList<QUrl> m_urls;
+ QSet<QString> m_keySet;
static ExternalScriptPlugin* m_self;
class ExternalScriptViewFactory *m_factory;
REPOSITORY
R32 KDevelop
REVISION DETAIL
https://phabricator.kde.org/D15743
To: amhndu, #kdevelop
Cc: flherne, kdevelop-devel, glebaccon, antismap, iodelay, vbspam, geetamc, Pilzschaf, akshaydeo, surgenight, arrowd
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kdevelop-devel/attachments/20180927/6e62ac59/attachment-0001.html>
More information about the KDevelop-devel
mailing list