Fix a regression that would show some wrong context menu entries in some cases
[quassel.git] / src / uisupport / actioncollection.cpp
index a20d918..b752cfb 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-08 by the Quassel Project                          *
+ *   Copyright (C) 2005-09 by the Quassel Project                          *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
  * Parts of this implementation are based on KDE's KActionCollection.      *
  ***************************************************************************/
 
+#ifndef HAVE_KDE
+
 #include <QAction>
+#include <QDebug>
 
 #include "actioncollection.h"
 
@@ -49,7 +52,8 @@ QList<QAction *> ActionCollection::actions() const {
 }
 
 Action *ActionCollection::addAction(const QString &name, Action *action) {
-  QAction *act = addAction(name, action);
+  QAction *act = addAction(name, static_cast<QAction *>(action));
+  Q_UNUSED(act);
   Q_ASSERT(act == action);
   return action;
 }
@@ -73,7 +77,7 @@ QAction *ActionCollection::addAction(const QString &name, QAction *action) {
   else
     action->setObjectName(indexName);
   if(indexName.isEmpty())
-    indexName = QString("unnamed-%1").arg((int)action, 16);
+    indexName = indexName.sprintf("unnamed-%p", (void *)action);
 
   // do we already have this action?
   if(_actionByName.value(indexName, 0) == action)
@@ -206,6 +210,10 @@ void ActionCollection::clearAssociatedWidgets() {
   _associatedWidgets.clear();
 }
 
+void ActionCollection::associatedWidgetDestroyed(QObject *obj) {
+  _associatedWidgets.removeAll(static_cast<QWidget *>(obj));
+}
+
 bool ActionCollection::unlistAction(QAction *action) {
   // This might be called with a partly destroyed QAction!
 
@@ -220,3 +228,5 @@ bool ActionCollection::unlistAction(QAction *action) {
 
   return true;
 }
+
+#endif /* HAVE_KDE */