diff options
author | Nick Dedekind <nicholas.dedekind@gmail.com> | 2013-08-26 14:19:38 +0000 |
---|---|---|
committer | Tarmac <> | 2013-08-26 14:19:38 +0000 |
commit | aaa82529fb8d8601e47ae27b60814c744f1f75a3 (patch) | |
tree | 1c3a8404f9d1d3e4439a63e1d8b204aadc99799c /libqmenumodel/src/qdbusmenumodel.cpp | |
parent | 50563a1ab243436c8c8fa86f88ef4a4b25b9a107 (diff) | |
parent | db47d077dcd9ee6761de828c9194d3fa2331f9ea (diff) | |
download | qmenumodel-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.cpp | 27 |
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); } |