[arch-commits] Commit in owncloud-client/trunk (PKGBUILD fix-tray-icon.patch)
Antonio Rojas
arojas at archlinux.org
Fri Sep 4 15:01:09 UTC 2015
Date: Friday, September 4, 2015 @ 17:01:09
Author: arojas
Revision: 139209
Fix system tray menu in Plasma 5 (FS#46126)
Added:
owncloud-client/trunk/fix-tray-icon.patch
Modified:
owncloud-client/trunk/PKGBUILD
---------------------+
PKGBUILD | 11 ++--
fix-tray-icon.patch | 134 ++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 142 insertions(+), 3 deletions(-)
Modified: PKGBUILD
===================================================================
--- PKGBUILD 2015-09-04 14:16:59 UTC (rev 139208)
+++ PKGBUILD 2015-09-04 15:01:09 UTC (rev 139209)
@@ -5,7 +5,7 @@
_name=owncloudclient
pkgname=owncloud-client
pkgver=2.0.1
-pkgrel=1
+pkgrel=2
pkgdesc='ownCloud client based on mirall'
arch=(i686 x86_64)
url='http://owncloud.org/'
@@ -15,13 +15,18 @@
optdepends=('python2-nautilus: integration with Nautilus')
install=$pkgname.install
backup=('etc/ownCloud/sync-exclude.lst')
-source=("https://download.owncloud.com/desktop/stable/$_name-$pkgver.tar.xz"{,.asc})
+source=("https://download.owncloud.com/desktop/stable/$_name-$pkgver.tar.xz"{,.asc} fix-tray-icon.patch)
md5sums=('e87a01e464f005cf95cde83f46cf318d'
- 'SKIP')
+ 'SKIP'
+ '12f59eb804822ec50045a46ed8586029')
validpgpkeys=('F05F7DD7953A07DF36579DAA498C45EBE94E7B37')
prepare() {
mkdir -p build
+
+# Fix tray icon in Plasma 5
+ cd $_name-$pkgver
+ patch -p1 -i ../fix-tray-icon.patch
}
build() {
Added: fix-tray-icon.patch
===================================================================
--- fix-tray-icon.patch (rev 0)
+++ fix-tray-icon.patch 2015-09-04 15:01:09 UTC (rev 139209)
@@ -0,0 +1,134 @@
+diff -ur owncloudclient-2.0.1.orig/src/gui/application.cpp owncloudclient-2.0.1/src/gui/application.cpp
+--- owncloudclient-2.0.1.orig/src/gui/application.cpp 2015-09-01 15:50:21.000000000 +0200
++++ owncloudclient-2.0.1/src/gui/application.cpp 2015-09-04 16:50:53.333513460 +0200
+@@ -229,7 +229,7 @@
+
+ if (list.isEmpty()) {
+ // let gui open the setup wizard
+- _gui->slotOpenSettingsDialog( true );
++ _gui->slotOpenSettingsDialog();
+
+ _checkConnectionTimer.stop(); // don't popup the wizard on interval;
+ }
+diff -ur owncloudclient-2.0.1.orig/src/gui/owncloudgui.cpp owncloudclient-2.0.1/src/gui/owncloudgui.cpp
+--- owncloudclient-2.0.1.orig/src/gui/owncloudgui.cpp 2015-09-01 15:50:21.000000000 +0200
++++ owncloudclient-2.0.1/src/gui/owncloudgui.cpp 2015-09-04 16:43:29.164278696 +0200
+@@ -56,6 +56,7 @@
+ #endif
+ _logBrowser(0),
+ _recentActionsMenu(0),
++ _qdbusmenuWorkaround(false),
+ _folderOpenActionMapper(new QSignalMapper(this)),
+ _recentItemsMapper(new QSignalMapper(this)),
+ _app(parent)
+@@ -145,16 +146,14 @@
+ }
+
+ // This should rather be in application.... or rather in ConfigFile?
+-void ownCloudGui::slotOpenSettingsDialog( bool openSettings )
++void ownCloudGui::slotOpenSettingsDialog()
+ {
+ // if account is set up, start the configuration wizard.
+ if( !AccountManager::instance()->accounts().isEmpty() ) {
+- if( openSettings ) {
+- if (_settingsDialog.isNull() || !_settingsDialog->isVisible()) {
+- slotShowSettings();
+- } else {
+- _settingsDialog->close();
+- }
++ if (_settingsDialog.isNull() || !_settingsDialog->isVisible()) {
++ slotShowSettings();
++ } else {
++ _settingsDialog->close();
+ }
+ } else {
+ qDebug() << "No configured folders yet, starting setup wizard";
+@@ -164,11 +163,20 @@
+
+ void ownCloudGui::slotTrayClicked( QSystemTrayIcon::ActivationReason reason )
+ {
++ if (_qdbusmenuWorkaround) {
++ static QElapsedTimer last_click;
++ if (last_click.isValid() && last_click.elapsed() < 200) {
++ return;
++ }
++ last_click.start();
++ }
++
+ // A click on the tray icon should only open the status window on Win and
+ // Linux, not on Mac. They want a menu entry.
+ #if !defined Q_OS_MAC
+ if( reason == QSystemTrayIcon::Trigger ) {
+- slotOpenSettingsDialog(true); // start settings if config is existing.
++ // Start settings if config is existing.
++ slotOpenSettingsDialog();
+ }
+ #else
+ // On Mac, if the settings dialog is already visible but hidden
+@@ -368,8 +376,10 @@
+ }
+ }
+
+-
+ if ( _contextMenu ) {
++ if (_qdbusmenuWorkaround) {
++ _tray->hide();
++ }
+ _contextMenu->clear();
+ _recentActionsMenu->clear();
+ _recentActionsMenu->addAction(tr("None."));
+@@ -380,6 +390,17 @@
+ // this must be called only once after creating the context menu, or
+ // it will trigger a bug in Ubuntu's SNI bridge patch (11.10, 12.04).
+ _tray->setContextMenu(_contextMenu.data());
++
++ // Enables workarounds for bugs introduced in Qt 5.5.0
++ // In particular QTBUG-47863 #3672 (tray menu fails to update and
++ // becomes unresponsive) and QTBUG-48068 #3722 (click signal is
++ // emitted several times)
++ QObject* platformMenu = reinterpret_cast<QObject*>(_tray->contextMenu()->platformMenu());
++ if (platformMenu
++ && platformMenu->metaObject()->className() == QLatin1String("QDBusPlatformMenu")) {
++ _qdbusmenuWorkaround = true;
++ qDebug() << "Enabled QDBusPlatformMenu workaround";
++ }
+ }
+ _contextMenu->setTitle(Theme::instance()->appNameGUI() );
+ // We must call deleteLater because we might be called from the press in one of the action.
+@@ -432,13 +453,9 @@
+ }
+ _contextMenu->addAction(_actionQuit);
+
+- // Workaround for #3656, Qt 5.5.0 + dbus based tray integration.
+-#ifdef Q_OS_LINUX
+-#if QT_VERSION >= QT_VERSION_CHECK(5, 5, 0)
+- _tray->hide();
+- _tray->show();
+-#endif
+-#endif
++ if (_qdbusmenuWorkaround) {
++ _tray->show();
++ }
+ }
+
+
+diff -ur owncloudclient-2.0.1.orig/src/gui/owncloudgui.h owncloudclient-2.0.1/src/gui/owncloudgui.h
+--- owncloudclient-2.0.1.orig/src/gui/owncloudgui.h 2015-09-01 15:50:21.000000000 +0200
++++ owncloudclient-2.0.1/src/gui/owncloudgui.h 2015-09-04 16:43:55.801097964 +0200
+@@ -72,7 +72,7 @@
+ void slotTrayClicked( QSystemTrayIcon::ActivationReason reason );
+ void slotToggleLogBrowser();
+ void slotOpenOwnCloud();
+- void slotOpenSettingsDialog( bool openSettings );
++ void slotOpenSettingsDialog();
+ void slotHelp();
+ void slotOpenPath(const QString& path);
+ void slotAccountStateChanged();
+@@ -98,6 +98,7 @@
+ QScopedPointer<QMenu> _contextMenu;
+ QMenu *_recentActionsMenu;
+ QVector<QMenu*> _accountMenus;
++ bool _qdbusmenuWorkaround;
+
+ QAction *_actionLogin;
+ QAction *_actionLogout;
More information about the arch-commits
mailing list