Index: src/gui/kernel/qaction.h
===================================================================
--- src/gui/kernel/qaction.h	(revision 452656)
+++ src/gui/kernel/qaction.h	(working copy)
@@ -125,6 +125,8 @@
 
     bool isVisible() const;
 
+    bool isAddedToWidgets() const;
+
     enum ActionEvent { Trigger, Hover };
     void activate(ActionEvent event);
     bool showStatusText(QWidget *widget=0);
@@ -159,6 +161,7 @@
     void setEnabled(bool);
     inline void setDisabled(bool b) { setEnabled(!b); }
     void setVisible(bool);
+    void removeFromAllWidgets();
 
 signals:
     void changed();
Index: src/gui/kernel/qaction.cpp
===================================================================
--- src/gui/kernel/qaction.cpp	(revision 452656)
+++ src/gui/kernel/qaction.cpp	(working copy)
@@ -805,7 +805,28 @@
     return d->visible;
 }
 
+
+bool QAction::isAddedToWidgets() const
+{
+    Q_D(const QAction);
+    return !d->widgets.isEmpty();
+}
+
 /*!
+  Removes this action from all widgets that it is currently
+  added to into
+*/
+void QAction::removeFromAllWidgets()
+{
+    Q_D(QAction);
+    for (int i = d->widgets.size()-1; i >= 0; --i) {
+        QWidget *w = d->widgets.at(i);
+        w->removeAction(this);
+    }
+}
+
+
+/*!
   \reimp
 */
 bool

