diff options
Diffstat (limited to 'extra/appmenu-qt')
-rw-r--r-- | extra/appmenu-qt/PKGBUILD | 18 | ||||
-rw-r--r-- | extra/appmenu-qt/appmenu-async.diff | 121 |
2 files changed, 133 insertions, 6 deletions
diff --git a/extra/appmenu-qt/PKGBUILD b/extra/appmenu-qt/PKGBUILD index 8a18170b7..27e1208bf 100644 --- a/extra/appmenu-qt/PKGBUILD +++ b/extra/appmenu-qt/PKGBUILD @@ -1,21 +1,27 @@ -# $Id: PKGBUILD 157935 2012-04-30 07:11:57Z andrea $ +# $Id: PKGBUILD 174631 2013-01-05 12:47:25Z andrea $ # Maintainer: Andrea Scarpino <andrea@archlinux.org> pkgname=appmenu-qt pkgver=0.2.6 -pkgrel=1 +pkgrel=2 pkgdesc="Allows Qt applications to export menus over DBus to a menu applet" arch=('i686' 'x86_64') url='https://launchpad.net/appmenu-qt' license=('GPL') depends=('libdbusmenu-qt') makedepends=('cmake') -source=("http://launchpad.net/${pkgname}/trunk/${pkgver}/+download/${pkgname}-${pkgver}.tar.bz2"{,.asc}) +source=("http://launchpad.net/${pkgname}/trunk/${pkgver}/+download/${pkgname}-${pkgver}.tar.bz2"{,.asc} + 'appmenu-async.diff') md5sums=('90cce750e5412d43ce075b0a9bdb6782' - 'de499d01369fc85040f5bbfc53ae1700') + 'de499d01369fc85040f5bbfc53ae1700' + '82947207881702d88403c149406b502a') build() { - cd "${srcdir}" + # FS#33286 + cd ${pkgname}-${pkgver} + patch -p0 -i "${srcdir}"/appmenu-async.diff + cd ../ + mkdir build cd build cmake ../${pkgname}-${pkgver} \ @@ -25,6 +31,6 @@ build() { } package() { - cd "${srcdir}"/build + cd build make DESTDIR="${pkgdir}" install } diff --git a/extra/appmenu-qt/appmenu-async.diff b/extra/appmenu-qt/appmenu-async.diff new file mode 100644 index 000000000..c4bc509d7 --- /dev/null +++ b/extra/appmenu-qt/appmenu-async.diff @@ -0,0 +1,121 @@ +=== modified file 'src/CMakeLists.txt' +--- src/CMakeLists.txt 2012-02-27 14:27:17 +0000 ++++ src/CMakeLists.txt 2013-01-04 10:33:53 +0000 +@@ -15,6 +15,10 @@ + ${QT_QTXML_INCLUDE_DIR} + ) + ++qt4_add_dbus_interface(appmenu_qt_SRCS com.canonical.AppMenu.Registrar.xml ++ registrar) ++ ++ + qt4_automoc(${appmenu_qt_SRCS}) + + link_directories( + +=== modified file 'src/appmenuplatformmenubar.cpp' +--- src/appmenuplatformmenubar.cpp 2012-04-04 16:06:06 +0000 ++++ src/appmenuplatformmenubar.cpp 2013-01-04 10:36:25 +0000 +@@ -15,6 +15,7 @@ + along with appmenu-qt. If not, see <http://www.gnu.org/licenses/>. + */ + #include "appmenuplatformmenubar.h" ++#include "registrar.h" + + // dbusmenu-qt + #include <dbusmenuexporter.h> +@@ -393,6 +394,8 @@ + + bool MenuBarAdapter::registerWindow() + { ++ static com::canonical::AppMenu::Registrar *registrar = 0; ++ + if (!m_menuBar->window()) { + WARN << "No parent for this menubar"; + return false; +@@ -403,9 +406,8 @@ + return true; + } + +- QDBusInterface host(REGISTRAR_SERVICE, REGISTRAR_PATH, REGISTRAR_IFACE); +- if (!host.isValid()) { +- return false; ++ if (!registrar) { ++ registrar = new com::canonical::AppMenu::Registrar(REGISTRAR_SERVICE, REGISTRAR_PATH, QDBusConnection::sessionBus(), 0); + } + + Q_FOREACH(QAction *action, m_menuBar->actions()) { +@@ -428,8 +430,9 @@ + } + + m_registeredWinId = winId; +- QVariant path = QVariant::fromValue<QDBusObjectPath>(QDBusObjectPath(m_objectPath)); +- host.asyncCall(QLatin1String("RegisterWindow"), QVariant(winId), path); ++ if (registrar) { ++ registrar->RegisterWindow(winId, QDBusObjectPath(m_objectPath)); ++ } + return true; + } + + +=== added file 'src/com.canonical.AppMenu.Registrar.xml' +--- src/com.canonical.AppMenu.Registrar.xml 1970-01-01 00:00:00 +0000 ++++ src/com.canonical.AppMenu.Registrar.xml 2013-01-04 10:04:35 +0000 +@@ -0,0 +1,56 @@ ++<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN" "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd"> ++<node xmlns:dox="http://www.ayatana.org/dbus/dox.dtd"> ++ <dox:d><![CDATA[ ++ @mainpage ++ ++ An interface to register menus that are associated with a window in an application. The ++ main interface is docuemented here: @ref com::canonical::AppMenu::Registrar. ++ ++ The actual menus are transported using the dbusmenu protocol which is available ++ here: @ref com::canonical::dbusmenu. ++ ]]></dox:d> ++ <interface name="com.canonical.AppMenu.Registrar" xmlns:dox="http://www.ayatana.org/dbus/dox.dtd"> ++ <dox:d> ++ An interface to register a menu from an application's window to be displayed in another ++ window. This manages that association between XWindow Window IDs and the dbus ++ address and object that provides the menu using the dbusmenu dbus interface. ++ </dox:d> ++ <method name="RegisterWindow"> ++ <dox:d><![CDATA[ ++ Associates a dbusmenu with a window ++ ++ /note this method assumes that the connection from the caller is the DBus connection ++ to use for the object. Applications that use multiple DBus connections will need to ++ ensure this method is called with the same connection that implmenets the object. ++ ]]></dox:d> ++ <arg name="windowId" type="u" direction="in"> ++ <dox:d>The XWindow ID of the window</dox:d> ++ </arg> ++ <arg name="menuObjectPath" type="o" direction="in"> ++ <dox:d>The object on the dbus interface implementing the dbusmenu interface</dox:d> ++ </arg> ++ </method> ++ <method name="UnregisterWindow"> ++ <dox:d> ++ A method to allow removing a window from the database. Windows will also be removed ++ when the client drops off DBus so this is not required. It is polite though. And ++ important for testing. ++ </dox:d> ++ <arg name="windowId" type="u" direction="in"> ++ <dox:d>The XWindow ID of the window</dox:d> ++ </arg> ++ </method> ++ <method name="GetMenuForWindow"> ++ <dox:d>Gets the registered menu for a given window ID.</dox:d> ++ <arg name="windowId" type="u" direction="in"> ++ <dox:d>The XWindow ID of the window to get</dox:d> ++ </arg> ++ <arg name="service" type="s" direction="out"> ++ <dox:d>The address of the connection on DBus (e.g. :1.23 or org.example.service)</dox:d> ++ </arg> ++ <arg name="menuObjectPath" type="o" direction="out"> ++ <dox:d>The path to the object which implements the com.canonical.dbusmenu interface.</dox:d> ++ </arg> ++ </method> ++ </interface> ++</node> + |