summaryrefslogtreecommitdiff
path: root/extra/appmenu-qt
diff options
context:
space:
mode:
Diffstat (limited to 'extra/appmenu-qt')
-rw-r--r--extra/appmenu-qt/PKGBUILD18
-rw-r--r--extra/appmenu-qt/appmenu-async.diff121
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>
+