diff --git a/CMakeLists.txt b/CMakeLists.txt
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -9,6 +9,7 @@
include(KDEInstallDirs)
include(KDECMakeSettings)
include(KDECompilerSettings)
+include(ECMQtDeclareLoggingCategory)
find_package(Qt5 ${REQUIRED_QT_VERSION} CONFIG REQUIRED Quick Widgets DBus)
find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS Plasma WindowSystem)
diff --git a/plugin/libdbusmenuqt/CMakeLists.txt b/plugin/libdbusmenuqt/CMakeLists.txt
--- a/plugin/libdbusmenuqt/CMakeLists.txt
+++ b/plugin/libdbusmenuqt/CMakeLists.txt
@@ -5,6 +5,11 @@
utils.cpp
)
+ecm_qt_declare_logging_category(libdbusmenu_SRCS HEADER debug.h
+ IDENTIFIER DBUSMENUQT
+ CATEGORY_NAME org.kde.libdbusmenuqt
+ DEFAULT_SEVERITY Info)
+
set_source_files_properties(com.canonical.dbusmenu.xml PROPERTIES
NO_NAMESPACE true
INCLUDE "dbusmenutypes_p.h"
@@ -18,3 +23,5 @@
Qt5::DBus
Qt5::Widgets
)
+
+# add_subdirectory(test)
diff --git a/plugin/libdbusmenuqt/com.canonical.dbusmenu.xml b/plugin/libdbusmenuqt/com.canonical.dbusmenu.xml
--- a/plugin/libdbusmenuqt/com.canonical.dbusmenu.xml
+++ b/plugin/libdbusmenuqt/com.canonical.dbusmenu.xml
@@ -2,8 +2,8 @@
-
-
+
+
diff --git a/plugin/libdbusmenuqt/dbusmenuimporter.h b/plugin/libdbusmenuqt/dbusmenuimporter.h
--- a/plugin/libdbusmenuqt/dbusmenuimporter.h
+++ b/plugin/libdbusmenuqt/dbusmenuimporter.h
@@ -22,7 +22,7 @@
#define DBUSMENUIMPORTER_H
// Qt
-#include
+#include
class QAction;
class QDBusPendingCallWatcher;
@@ -43,7 +43,7 @@
/**
* Creates a DBusMenuImporter listening over DBus on service, path
*/
- DBusMenuImporter(const QString &service, const QString &path, QObject *parent = 0);
+ DBusMenuImporter(const QString &service, const QString &path, QObject *parent = nullptr);
~DBusMenuImporter() override;
diff --git a/plugin/libdbusmenuqt/dbusmenuimporter.cpp b/plugin/libdbusmenuqt/dbusmenuimporter.cpp
--- a/plugin/libdbusmenuqt/dbusmenuimporter.cpp
+++ b/plugin/libdbusmenuqt/dbusmenuimporter.cpp
@@ -20,6 +20,8 @@
*/
#include "dbusmenuimporter.h"
+#include "debug.h"
+
// Qt
#include
#include
@@ -46,12 +48,11 @@
//#define BENCHMARK
#ifdef BENCHMARK
-#include
static QTime sChrono;
#endif
#define DMRETURN_IF_FAIL(cond) if (!(cond)) { \
- qWarning() << "Condition failed: " #cond; \
+ qCWarning(DBUSMENUQT) << "Condition failed: " #cond; \
return; \
}
@@ -61,7 +62,7 @@
static QAction *createKdeTitle(QAction *action, QWidget *parent)
{
- QToolButton *titleWidget = new QToolButton(0);
+ QToolButton *titleWidget = new QToolButton(nullptr);
QFont font = titleWidget->font();
font.setBold(true);
titleWidget->setFont(font);
@@ -182,7 +183,7 @@
} else if (key == QLatin1String("shortcut")) {
updateActionShortcut(action, value);
} else {
- qWarning() << "Unhandled property update" << key;
+ qDebug(DBUSMENUQT) << "Unhandled property update" << key;
}
}
@@ -230,7 +231,7 @@
action->setProperty(DBUSMENU_PROPERTY_ICON_DATA_HASH, dataHash);
QPixmap pix;
if (!pix.loadFromData(data)) {
- qWarning() << "Failed to decode icon-data property for action" << action->text();
+ qDebug(DBUSMENUQT) << "Failed to decode icon-data property for action" << action->text();
action->setIcon(QIcon());
return;
}
@@ -258,7 +259,7 @@
}
QAction *action = m_actionForId.value(id);
if (!action) {
- return 0;
+ return nullptr;
}
return action->menu();
}
@@ -279,7 +280,7 @@
d->q = this;
d->m_interface = new DBusMenuInterface(service, path, QDBusConnection::sessionBus(), this);
- d->m_menu = 0;
+ d->m_menu = nullptr;
d->m_pendingLayoutUpdateTimer = new QTimer(this);
d->m_pendingLayoutUpdateTimer->setSingleShot(true);
@@ -327,7 +328,7 @@
QMenu *DBusMenuImporter::menu() const
{
if (!d->m_menu) {
- d->m_menu = d->createMenu(0);
+ d->m_menu = d->createMenu(nullptr);
}
return d->m_menu;
}
@@ -383,7 +384,7 @@
QDBusPendingReply reply = *watcher;
if (!reply.isValid()) {
- qWarning() << reply.error().message();
+ qDebug(DBUSMENUQT) << reply.error().message();
if (menu) {
emit menuUpdated(menu);
}
@@ -396,7 +397,7 @@
DBusMenuLayoutItem rootItem = reply.argumentAt<1>();
if (!menu) {
- qWarning() << "No menu for id" << parentId;
+ qDebug(DBUSMENUQT) << "No menu for id" << parentId;
return;
}
@@ -409,6 +410,7 @@
for (QAction *action: menu->actions()) {
int id = action->property(DBUSMENU_PROPERTY_ID).toInt();
if (! newDBusMenuItemIds.contains(id)) {
+ menu->removeAction(action);
action->deleteLater();
d->m_actionForId.remove(id);
}
@@ -477,6 +479,9 @@
watcher->setProperty(DBUSMENU_PROPERTY_ID, id);
connect(watcher, &QDBusPendingCallWatcher::finished, this,
&DBusMenuImporter::slotAboutToShowDBusCallFinished);
+
+ // Firefox deliberately ignores "aboutToShow" whereas Qt ignores" opened", so we'll just send both all the time...
+ d->sendEvent(id, QStringLiteral("opened"));
}
void DBusMenuImporter::slotAboutToShowDBusCallFinished(QDBusPendingCallWatcher *watcher)
@@ -491,7 +496,7 @@
QDBusPendingReply reply = *watcher;
if (reply.isError()) {
- qWarning() << "Call to AboutToShow() failed:" << reply.error().message();
+ qDebug(DBUSMENUQT) << "Call to AboutToShow() failed:" << reply.error().message();
menuUpdated(menu);
return;
}
@@ -525,12 +530,6 @@
Q_ASSERT(menu);
updateMenu(menu);
-
- QAction *action = menu->menuAction();
- Q_ASSERT(action);
-
- int id = action->property(DBUSMENU_PROPERTY_ID).toInt();
- d->sendEvent(id, QStringLiteral("opened"));
}
QMenu *DBusMenuImporter::createMenu(QWidget *parent)
diff --git a/plugin/libdbusmenuqt/dbusmenushortcut_p.h b/plugin/libdbusmenuqt/dbusmenushortcut_p.h
--- a/plugin/libdbusmenuqt/dbusmenushortcut_p.h
+++ b/plugin/libdbusmenuqt/dbusmenushortcut_p.h
@@ -22,8 +22,8 @@
#define DBUSMENUSHORTCUT_H
// Qt
-#include
-#include
+#include
+#include
class QKeySequence;
diff --git a/plugin/libdbusmenuqt/dbusmenushortcut_p.cpp b/plugin/libdbusmenuqt/dbusmenushortcut_p.cpp
--- a/plugin/libdbusmenuqt/dbusmenushortcut_p.cpp
+++ b/plugin/libdbusmenuqt/dbusmenushortcut_p.cpp
@@ -21,7 +21,7 @@
#include "dbusmenushortcut_p.h"
// Qt
-#include
+#include
static const int QT_COLUMN = 0;
static const int DM_COLUMN = 1;
@@ -41,11 +41,11 @@
// cf https://bugs.launchpad.net/libdbusmenu-qt/+bug/712565
{"+", "plus"},
{"-", "minus"},
- {0, 0}
+ {nullptr, nullptr}
};
const Row* ptr = table;
- for (; ptr->zero != 0; ++ptr) {
+ for (; ptr->zero != nullptr; ++ptr) {
const char* from = (*ptr)[srcCol];
const char* to = (*ptr)[dstCol];
tokens->replaceInStrings(from, to);
diff --git a/plugin/libdbusmenuqt/dbusmenutypes_p.h b/plugin/libdbusmenuqt/dbusmenutypes_p.h
--- a/plugin/libdbusmenuqt/dbusmenutypes_p.h
+++ b/plugin/libdbusmenuqt/dbusmenutypes_p.h
@@ -22,9 +22,9 @@
#define DBUSMENUTYPES_P_H
// Qt
-#include
-#include
-#include
+#include
+#include
+#include
class QDBusArgument;