aboutsummaryrefslogtreecommitdiff
path: root/libqmenumodel/src/qdbusmenumodel.cpp
diff options
context:
space:
mode:
authorNick Dedekind <nicholas.dedekind@gmail.com>2013-08-26 14:19:38 +0000
committerTarmac <>2013-08-26 14:19:38 +0000
commitaaa82529fb8d8601e47ae27b60814c744f1f75a3 (patch)
tree1c3a8404f9d1d3e4439a63e1d8b204aadc99799c /libqmenumodel/src/qdbusmenumodel.cpp
parent50563a1ab243436c8c8fa86f88ef4a4b25b9a107 (diff)
parentdb47d077dcd9ee6761de828c9194d3fa2331f9ea (diff)
downloadqmenumodel-aaa82529fb8d8601e47ae27b60814c744f1f75a3.tar.gz
qmenumodel-aaa82529fb8d8601e47ae27b60814c744f1f75a3.tar.bz2
qmenumodel-aaa82529fb8d8601e47ae27b60814c744f1f75a3.zip
Adds qt event spawning to direct glib main loop callbacks. Fixes: https://bugs.launchpad.net/bugs/1183065, https://bugs.launchpad.net/bugs/1206991.
Approved by Lars Uebernickel, PS Jenkins bot.
Diffstat (limited to 'libqmenumodel/src/qdbusmenumodel.cpp')
-rw-r--r--libqmenumodel/src/qdbusmenumodel.cpp27
1 files changed, 22 insertions, 5 deletions
diff --git a/libqmenumodel/src/qdbusmenumodel.cpp b/libqmenumodel/src/qdbusmenumodel.cpp
index 284b08b..f8b4a51 100644
--- a/libqmenumodel/src/qdbusmenumodel.cpp
+++ b/libqmenumodel/src/qdbusmenumodel.cpp
@@ -22,6 +22,9 @@ extern "C" {
}
#include "qdbusmenumodel.h"
+#include "qmenumodelevents.h"
+
+#include <QCoreApplication>
/*!
\qmltype QDBusMenuModel
@@ -49,7 +52,8 @@ extern "C" {
\endcode
*/
QDBusMenuModel::QDBusMenuModel(QObject *parent)
- : QMenuModel(0, parent)
+ : QMenuModel(0, parent),
+ QDBusObject(this)
{
}
@@ -83,13 +87,24 @@ void QDBusMenuModel::start()
void QDBusMenuModel::stop()
{
QDBusObject::disconnect();
- setMenuModel(NULL);
+
+ MenuModelEvent mme(NULL);
+ QCoreApplication::sendEvent(this, &mme);
+}
+
+bool QDBusMenuModel::event(QEvent* e)
+{
+ if (QDBusObject::event(e)) {
+ return true;
+ }
+ return QMenuModel::event(e);
}
/*! \internal */
void QDBusMenuModel::serviceVanish(GDBusConnection *)
{
- setMenuModel(NULL);
+ MenuModelEvent mme(NULL);
+ QCoreApplication::sendEvent(this, &mme);
}
/*! \internal */
@@ -98,8 +113,10 @@ void QDBusMenuModel::serviceAppear(GDBusConnection *connection)
GMenuModel *model = G_MENU_MODEL(g_dbus_menu_model_get(connection,
busName().toUtf8().data(),
objectPath().toUtf8().data()));
- setMenuModel(model);
- //setModel take care of the ref
+
+ MenuModelEvent mme(model);
+ QCoreApplication::sendEvent(this, &mme);
+ //event handling takes care of the ref
g_object_unref(model);
}