[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdelibs/kdeui/actions
From:       David Faure <faure () kde ! org>
Date:       2008-09-18 11:23:18
Message-ID: 1221736998.812335.18469.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 862271 by dfaure:

Fix unit test breakage; inserting the same action twice with two different names \
didn't remove the first name anymore, because of r860727 removing the data structure \
that was storing the old name. Michael, can I suggest adding tests in \
                kactioncollectiontest for the kactioncategory-related behavior?
CCMAIL: kde@michael-jansen.biz


 M  +11 -4     kactioncollection.cpp  


--- trunk/KDE/kdelibs/kdeui/actions/kactioncollection.cpp #862270:862271
@@ -220,6 +220,7 @@
     if (!action)
         return action;
 
+    const QString origName = action->objectName();
     QString index_name = name;
 
     if (index_name.isEmpty())
@@ -250,7 +251,13 @@
     }
 
     // Check if we have this action under a different name.
-    takeAction(action);
+    // Not using takeAction because we don't want to remove it from categories,
+    // and because it has the new name already.
+    const int oldIndex = d->actions.indexOf(action);
+    if (oldIndex != -1) {
+        d->actionByName.remove(origName);
+        d->actions.removeAt(oldIndex);
+    }
 
     // Add action to our lists.
     d->actionByName.insert(index_name, action);
@@ -475,7 +482,7 @@
       QString actionName = it.key();
 
       bool bSameAsDefault = (kaction->shortcut() == \
                kaction->shortcut(KAction::DefaultShortcut));
-      kDebug(129) << "name = " << actionName 
+      kDebug(129) << "name = " << actionName
                   << " shortcut = " << \
                kaction->shortcut(KAction::ActiveShortcut).toString()
                   << " globalshortcut = " << \
                kaction->globalShortcut(KAction::ActiveShortcut).toString()
                   << " def = " << \
kaction->shortcut(KAction::DefaultShortcut).toString(); @@ -607,7 +614,7 @@
   if (d->connectHovered && d->connectTriggered)
     return;
 
-  if (QMetaObject::normalizedSignature(SIGNAL(actionHighlighted(QAction*))) == \
signal ||  +  if (QMetaObject::normalizedSignature(SIGNAL(actionHighlighted(QAction*))) \
                == signal ||
       QMetaObject::normalizedSignature(SIGNAL(actionHovered(QAction*))) == signal) {
     if (!d->connectHovered) {
       d->connectHovered = true;
@@ -680,7 +687,7 @@
 
   // Remove the action
   actionByName.remove(name);
-  actions.takeAt(index);
+  actions.removeAt(index);
 
   // Remove the action from the categories. Should be only one
   QList<KActionCategory*> categories = q->findChildren<KActionCategory*>();


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic