diff --git a/f1ee10f81ac18789e9a7dc715b464415ba2bc2b8.patch b/f1ee10f81ac18789e9a7dc715b464415ba2bc2b8.patch new file mode 100644 index 0000000..d49c508 --- /dev/null +++ b/f1ee10f81ac18789e9a7dc715b464415ba2bc2b8.patch @@ -0,0 +1,343 @@ +From f1ee10f81ac18789e9a7dc715b464415ba2bc2b8 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Martin=20Gr=C3=A4=C3=9Flin?= +Date: Wed, 19 Feb 2014 11:01:44 +0100 +Subject: [PATCH] Prefer QPA implementation in qsystemtrayicon_x11 if available + +In order to have the possibility to provide a custom QSystemTrayIcon +implementation in the platform theme instead of the X11 xembed based +one, the qpa implementation needs to be called. This was not possible +as qpa and x11 implementation were compile time mutual exclusive. + +This change moves the qpa implementation in the shared part and the +methods in qsystemtrayicon_qpa just delegate to them. In addition the +_x11 part tries to create a QPlatformSystemTrayIcon through the +platform theme and if that succeeds the implementation prefers the qpa +variant and delegates to the same methods. + +Change-Id: I6b33acac63524a77ebdce39af6eb74666f8c7561 +Reviewed-by: Kevin Krammer +Reviewed-by: Friedemann Kleint +Reviewed-by: Paul Olav Tvete +--- + src/widgets/util/qsystemtrayicon.cpp | 68 ++++++++++++++++++++++++++++++ + src/widgets/util/qsystemtrayicon_p.h | 9 ++++ + src/widgets/util/qsystemtrayicon_qpa.cpp | 51 ++++------------------ + src/widgets/util/qsystemtrayicon_x11.cpp | 40 +++++++++++++++++- + 4 files changed, 126 insertions(+), 42 deletions(-) + +diff --git a/src/widgets/util/qsystemtrayicon.cpp b/src/widgets/util/qsystemtrayicon.cpp +index f1a69e6..fa318f3 100644 +--- a/src/widgets/util/qsystemtrayicon.cpp ++++ b/src/widgets/util/qsystemtrayicon.cpp +@@ -672,6 +672,74 @@ void QBalloonTip::timerEvent(QTimerEvent *e) + QWidget::timerEvent(e); + } + ++////////////////////////////////////////////////////////////////////// ++void QSystemTrayIconPrivate::install_sys_qpa() ++{ ++ qpa_sys->init(); ++ QObject::connect(qpa_sys, SIGNAL(activated(QPlatformSystemTrayIcon::ActivationReason)), ++ q_func(), SLOT(_q_emitActivated(QPlatformSystemTrayIcon::ActivationReason))); ++ QObject::connect(qpa_sys, &QPlatformSystemTrayIcon::messageClicked, ++ q_func(), &QSystemTrayIcon::messageClicked); ++ updateMenu_sys(); ++ updateIcon_sys(); ++ updateToolTip_sys(); ++} ++ ++void QSystemTrayIconPrivate::remove_sys_qpa() ++{ ++ qpa_sys->cleanup(); ++} ++ ++QRect QSystemTrayIconPrivate::geometry_sys_qpa() const ++{ ++ return qpa_sys->geometry(); ++} ++ ++void QSystemTrayIconPrivate::updateIcon_sys_qpa() ++{ ++ qpa_sys->updateIcon(icon); ++} ++ ++void QSystemTrayIconPrivate::updateMenu_sys_qpa() ++{ ++ if (menu) { ++ if (!menu->platformMenu()) { ++ QPlatformMenu *platformMenu = qpa_sys->createMenu(); ++ if (platformMenu) ++ menu->setPlatformMenu(platformMenu); ++ } ++ qpa_sys->updateMenu(menu->platformMenu()); ++ } ++} ++ ++void QSystemTrayIconPrivate::updateToolTip_sys_qpa() ++{ ++ qpa_sys->updateToolTip(toolTip); ++} ++ ++void QSystemTrayIconPrivate::showMessage_sys_qpa(const QString &message, ++ const QString &title, ++ QSystemTrayIcon::MessageIcon icon, ++ int msecs) ++{ ++ QIcon notificationIcon; ++ switch (icon) { ++ case QSystemTrayIcon::Information: ++ notificationIcon = QApplication::style()->standardIcon(QStyle::SP_MessageBoxInformation); ++ break; ++ case QSystemTrayIcon::Warning: ++ notificationIcon = QApplication::style()->standardIcon(QStyle::SP_MessageBoxWarning); ++ break; ++ case QSystemTrayIcon::Critical: ++ notificationIcon = QApplication::style()->standardIcon(QStyle::SP_MessageBoxCritical); ++ break; ++ default: ++ break; ++ } ++ qpa_sys->showMessage(message, title, notificationIcon, ++ static_cast(icon), msecs); ++} ++ + QT_END_NAMESPACE + + #endif // QT_NO_SYSTEMTRAYICON +diff --git a/src/widgets/util/qsystemtrayicon_p.h b/src/widgets/util/qsystemtrayicon_p.h +index 211ef30..317664a 100644 +--- a/src/widgets/util/qsystemtrayicon_p.h ++++ b/src/widgets/util/qsystemtrayicon_p.h +@@ -98,6 +98,15 @@ public: + QSystemTrayIconSys *sys; + QPlatformSystemTrayIcon *qpa_sys; + bool visible; ++ ++private: ++ void install_sys_qpa(); ++ void remove_sys_qpa(); ++ void updateIcon_sys_qpa(); ++ void updateToolTip_sys_qpa(); ++ void updateMenu_sys_qpa(); ++ QRect geometry_sys_qpa() const; ++ void showMessage_sys_qpa(const QString &msg, const QString &title, QSystemTrayIcon::MessageIcon icon, int secs); + }; + + class QBalloonTip : public QWidget +diff --git a/src/widgets/util/qsystemtrayicon_qpa.cpp b/src/widgets/util/qsystemtrayicon_qpa.cpp +index f98aeaf..045641c 100644 +--- a/src/widgets/util/qsystemtrayicon_qpa.cpp ++++ b/src/widgets/util/qsystemtrayicon_qpa.cpp +@@ -65,28 +65,20 @@ QSystemTrayIconPrivate::~QSystemTrayIconPrivate() + + void QSystemTrayIconPrivate::install_sys() + { +- if (qpa_sys) { +- qpa_sys->init(); +- QObject::connect(qpa_sys, SIGNAL(activated(QPlatformSystemTrayIcon::ActivationReason)), +- q_func(), SLOT(_q_emitActivated(QPlatformSystemTrayIcon::ActivationReason))); +- QObject::connect(qpa_sys, SIGNAL(messageClicked()), +- q_func(), SIGNAL(messageClicked())); +- updateMenu_sys(); +- updateIcon_sys(); +- updateToolTip_sys(); +- } ++ if (qpa_sys) ++ install_sys_qpa(); + } + + void QSystemTrayIconPrivate::remove_sys() + { + if (qpa_sys) +- qpa_sys->cleanup(); ++ remove_sys_qpa(); + } + + QRect QSystemTrayIconPrivate::geometry_sys() const + { + if (qpa_sys) +- return qpa_sys->geometry(); ++ return geometry_sys_qpa(); + else + return QRect(); + } +@@ -94,25 +86,19 @@ QRect QSystemTrayIconPrivate::geometry_sys() const + void QSystemTrayIconPrivate::updateIcon_sys() + { + if (qpa_sys) +- qpa_sys->updateIcon(icon); ++ updateIcon_sys_qpa(); + } + + void QSystemTrayIconPrivate::updateMenu_sys() + { +- if (qpa_sys && menu) { +- if (!menu->platformMenu()) { +- QPlatformMenu *platformMenu = qpa_sys->createMenu(); +- if (platformMenu) +- menu->setPlatformMenu(platformMenu); +- } +- qpa_sys->updateMenu(menu->platformMenu()); +- } ++ if (qpa_sys) ++ updateMenu_sys_qpa(); + } + + void QSystemTrayIconPrivate::updateToolTip_sys() + { + if (qpa_sys) +- qpa_sys->updateToolTip(toolTip); ++ updateToolTip_sys_qpa(); + } + + bool QSystemTrayIconPrivate::isSystemTrayAvailable_sys() +@@ -138,25 +124,8 @@ void QSystemTrayIconPrivate::showMessage_sys(const QString &message, + QSystemTrayIcon::MessageIcon icon, + int msecs) + { +- if (!qpa_sys) +- return; +- +- QIcon notificationIcon; +- switch (icon) { +- case QSystemTrayIcon::Information: +- notificationIcon = QApplication::style()->standardIcon(QStyle::SP_MessageBoxInformation); +- break; +- case QSystemTrayIcon::Warning: +- notificationIcon = QApplication::style()->standardIcon(QStyle::SP_MessageBoxWarning); +- break; +- case QSystemTrayIcon::Critical: +- notificationIcon = QApplication::style()->standardIcon(QStyle::SP_MessageBoxCritical); +- break; +- default: +- break; +- } +- qpa_sys->showMessage(message, title, notificationIcon, +- static_cast(icon), msecs); ++ if (qpa_sys) ++ showMessage_sys_qpa(message, title, icon, msecs); + } + + QT_END_NAMESPACE +diff --git a/src/widgets/util/qsystemtrayicon_x11.cpp b/src/widgets/util/qsystemtrayicon_x11.cpp +index 347e570..27d0418 100644 +--- a/src/widgets/util/qsystemtrayicon_x11.cpp ++++ b/src/widgets/util/qsystemtrayicon_x11.cpp +@@ -55,6 +55,9 @@ + #include + #include + #include ++#include ++#include ++#include + #include + + #ifndef QT_NO_SYSTEMTRAYICON +@@ -209,16 +212,22 @@ void QSystemTrayIconSys::paintEvent(QPaintEvent *) + + QSystemTrayIconPrivate::QSystemTrayIconPrivate() + : sys(0), ++ qpa_sys(QGuiApplicationPrivate::platformTheme()->createPlatformSystemTrayIcon()), + visible(false) + { + } + + QSystemTrayIconPrivate::~QSystemTrayIconPrivate() + { ++ delete qpa_sys; + } + + void QSystemTrayIconPrivate::install_sys() + { ++ if (qpa_sys) { ++ install_sys_qpa(); ++ return; ++ } + Q_Q(QSystemTrayIcon); + if (!sys && locateSystemTray()) { + sys = new QSystemTrayIconSys(q); +@@ -229,6 +238,8 @@ void QSystemTrayIconPrivate::install_sys() + + QRect QSystemTrayIconPrivate::geometry_sys() const + { ++ if (qpa_sys) ++ return geometry_sys_qpa(); + if (!sys) + return QRect(); + return sys->globalGeometry(); +@@ -236,6 +247,10 @@ QRect QSystemTrayIconPrivate::geometry_sys() const + + void QSystemTrayIconPrivate::remove_sys() + { ++ if (qpa_sys) { ++ remove_sys_qpa(); ++ return; ++ } + if (!sys) + return; + QBalloonTip::hideBalloon(); +@@ -246,17 +261,26 @@ void QSystemTrayIconPrivate::remove_sys() + + void QSystemTrayIconPrivate::updateIcon_sys() + { ++ if (qpa_sys) { ++ updateIcon_sys_qpa(); ++ return; ++ } + if (sys) + sys->updateIcon(); + } + + void QSystemTrayIconPrivate::updateMenu_sys() + { +- ++ if (qpa_sys) ++ updateMenu_sys_qpa(); + } + + void QSystemTrayIconPrivate::updateToolTip_sys() + { ++ if (qpa_sys) { ++ updateToolTip_sys_qpa(); ++ return; ++ } + if (!sys) + return; + #ifndef QT_NO_TOOLTIP +@@ -266,6 +290,11 @@ void QSystemTrayIconPrivate::updateToolTip_sys() + + bool QSystemTrayIconPrivate::isSystemTrayAvailable_sys() + { ++ QScopedPointer sys(QGuiApplicationPrivate::platformTheme()->createPlatformSystemTrayIcon()); ++ if (sys) ++ return sys->isSystemTrayAvailable(); ++ ++ // no QPlatformSystemTrayIcon so fall back to default xcb platform behavior + const QString platform = QGuiApplication::platformName(); + if (platform.compare(QStringLiteral("xcb"), Qt::CaseInsensitive) == 0) + return locateSystemTray(); +@@ -274,12 +303,21 @@ bool QSystemTrayIconPrivate::isSystemTrayAvailable_sys() + + bool QSystemTrayIconPrivate::supportsMessages_sys() + { ++ QScopedPointer sys(QGuiApplicationPrivate::platformTheme()->createPlatformSystemTrayIcon()); ++ if (sys) ++ return sys->supportsMessages(); ++ ++ // no QPlatformSystemTrayIcon so fall back to default xcb platform behavior + return true; + } + + void QSystemTrayIconPrivate::showMessage_sys(const QString &message, const QString &title, + QSystemTrayIcon::MessageIcon icon, int msecs) + { ++ if (qpa_sys) { ++ showMessage_sys_qpa(message, title, icon, msecs); ++ return; ++ } + if (!sys) + return; + const QPoint g = sys->globalGeometry().topLeft(); +-- +1.7.1 + diff --git a/libqt5-libtool-nodate.diff b/libqt5-libtool-nodate.diff index f08985a..cd16657 100644 --- a/libqt5-libtool-nodate.diff +++ b/libqt5-libtool-nodate.diff @@ -1,11 +1,11 @@ --- qtbase/qmake/generators/unix/unixmake2.cpp 2012/11/12 14:21:54 1.1 +++ qtbase/qmake/generators/unix/unixmake2.cpp 2012/11/12 14:22:13 -@@ -1297,7 +1297,7 @@ +@@ -1320,7 +1320,7 @@ UnixMakefileGenerator::writeLibtoolFile( QTextStream t(&ft); t << "# " << lname << " - a libtool library file\n"; t << "# Generated by qmake/libtool (" QMAKE_VERSION_STR ") (Qt " - << QT_VERSION_STR << ") on: " << QDateTime::currentDateTime().toString(); + << QT_VERSION_STR << ")"; - t << "\n"; - + t << "\n"; + t << "# The name that we can dlopen(3).\n" diff --git a/libqt5-qtbase.changes b/libqt5-qtbase.changes index fde20be..e6bd80d 100644 --- a/libqt5-qtbase.changes +++ b/libqt5-qtbase.changes @@ -1,3 +1,23 @@ +------------------------------------------------------------------- +Tue Mar 25 11:44:16 UTC 2014 - hrvoje.senjan@gmail.com + +- Update to 5.3.0 beta + * New feature release, please see + http://blog.qt.digia.com/blog/2014/03/25/qt-5-3-beta-released/ + and http://qt-project.org/wiki/New-Features-in-Qt-5.3 +- Drop qtbase-qatomic-ppc.patch, merged upstream +- Added f1ee10f81ac18789e9a7dc715b464415ba2bc2b8.patch: prefer QPA + implementation in qsystemtrayicon_x11 if available +- Added pkgconfig(libsystemd-journal) BuildRequires and activate + journald support +- Added pkgconfig(xkbcommon-x11) BuildRequires with 13.2+: it's now + needed for full xkb support, for lower version added xkeyboard-config + BuildRequires +- Ommit QMAKE_STRIP flags in mkspecs/common/linux.conf, otherwise no + debuginfo is generated for packages which use qmake buildsystem +- Droped passing of -javascript-jit, as per upstream changes +- Rebase libqt5-libtool-nodate.diff for this release + ------------------------------------------------------------------- Thu Mar 20 22:58:47 UTC 2014 - hrvoje.senjan@gmail.com diff --git a/libqt5-qtbase.spec b/libqt5-qtbase.spec index e5a9bd6..4ab4db3 100644 --- a/libqt5-qtbase.spec +++ b/libqt5-qtbase.spec @@ -19,15 +19,15 @@ %define qt5_snapshot 0 Name: libqt5-qtbase -Version: 5.2.1 +Version: 5.3.0~beta Release: 0 Summary: C++ Program Library, Core Components License: GPL-3.0 or SUSE-LGPL-2.1-with-digia-exception-1.1 Group: System/Libraries Url: http://qt.digia.com %define base_name libqt5 -%define real_version 5.2.1 -%define so_version 5.2.1 +%define real_version 5.3.0-beta +%define so_version 5.3.0 %if %qt5_snapshot %define tar_version qtbase-%{real_version} %else @@ -38,14 +38,14 @@ Source: %{tar_version}.tar.xz Source1: libqt5-qtbase.changes Source2: macros.qt5 Source3: baselibs.conf -# PATCH-FIX-UPSTREAM qtbase-qatomic-ppc.patch -- fixes build on PPC -Patch3: qtbase-qatomic-ppc.patch # PATCH-FIX-UPSTREAM libqt5-libtool-nodate.diff -- for ommiting date/time on build Patch109: libqt5-libtool-nodate.diff # PATCH-FIX-UPSTREAM qmake-add-usr-include.diff -- explicitly include /usr/include path Patch131: qmake-add-usr-include.diff # PATCH-FIX-UPSTREAM use-freetype-default.patch -- allow using lcd-default filter regardless of how freetype2 library has been built (w/ & w/o subpixel) Patch132: use-freetype-default.patch +# PATCH-FIX-UPSTREAM f1ee10f81ac18789e9a7dc715b464415ba2bc2b8.patch -- prefer QPA implementation in qsystemtrayicon_x11 if available +Patch133: f1ee10f81ac18789e9a7dc715b464415ba2bc2b8.patch BuildRequires: alsa-devel BuildRequires: cups-devel BuildRequires: fdupes @@ -91,7 +91,13 @@ BuildRequires: pkgconfig(harfbuzz) %endif BuildRequires: pkgconfig(ice) BuildRequires: pkgconfig(sm) -BuildRequires: pkgconfig(xkbcommon) >= 0.2.0 +%if 0%{?suse_version} >= 1320 +BuildRequires: pkgconfig(xkbcommon) +BuildRequires: pkgconfig(xkbcommon-x11) +%else +BuildRequires: xkeyboard-config +%endif +BuildRequires: pkgconfig(libsystemd-journal) BuildRoot: %{_tmppath}/%{name}-%{version}-build %description @@ -120,10 +126,10 @@ handling. %else %setup -q -n qtbase-opensource-src-%{real_version} %endif -%patch3 -p1 %patch109 -p1 %patch131 -p1 %patch132 -p1 +%patch133 -p1 # be sure not to use them rm -r src/3rdparty/{libjpeg,freetype,libpng,zlib} @@ -599,6 +605,7 @@ platform="-platform linux-g++-64" %else platform="" %endif +%define xkbconfigroot %(pkg-config --variable=xkb_base xkeyboard-config) %if %qt5_snapshot #force the configure script to generate the forwarding headers (it checks whether .git directory exists) mkdir .git @@ -606,6 +613,8 @@ mkdir .git # Record mtime of changes file instead of build time CHANGES=`stat --format="%y" %{SOURCE1}|cut --characters=1-10` sed -i -e "s/qt_instdate=\$TODAY/qt_instdate=$CHANGES/" configure +# so non-qt5 apps/libs don't get stripped +sed -i -e 's|^\(QMAKE_STRIP.*=\).*$|\1|g' mkspecs/common/linux.conf echo yes | ./configure $platform \ -prefix %{_prefix} \ @@ -631,6 +640,12 @@ echo yes | ./configure $platform \ -no-separate-debug-info \ -shared \ -xkb \ +%if 0%{?suse_version} >= 1320 + -system-xkbcommon \ +%else + -qt-xkbcommon \ + -xkb-config-root %{xkbconfigroot} \ +%endif -xrender \ -xcursor \ -dbus-linked \ @@ -657,12 +672,10 @@ echo yes | ./configure $platform \ -system-sqlite \ -no-sql-mysql \ -no-strip \ + -journald \ -xsync \ -xinput \ -gtkstyle \ -%ifarch %arm %ix86 x86_64 - -javascript-jit \ -%endif -xcb \ -egl \ -eglfs \ @@ -779,6 +792,8 @@ popd %{libqt5_bindir}/uic* %{_bindir}/syncqt.pl* %{libqt5_bindir}/syncqt.pl* +%{_bindir}/qlalr* +%{libqt5_bindir}/qlalr* %{libqt5_archdatadir}/mkspecs/ %dir %{libqt5_libdir}/cmake %dir %{libqt5_includedir} diff --git a/qtbase-opensource-src-5.2.1.tar.xz b/qtbase-opensource-src-5.2.1.tar.xz deleted file mode 100644 index f2c79f3..0000000 --- a/qtbase-opensource-src-5.2.1.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:acdfd1aa2548ebea1d922e8e24e5c59f5fc3b2beae7c8003ba47d773bfcc94c0 -size 46380984 diff --git a/qtbase-opensource-src-5.3.0-beta.tar.xz b/qtbase-opensource-src-5.3.0-beta.tar.xz new file mode 100644 index 0000000..0cb9ef4 --- /dev/null +++ b/qtbase-opensource-src-5.3.0-beta.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cb91f49d5d09ff28f773a7c4e00ebf27149de63ed86ef6936bd0f910a9a0bdd6 +size 46699796 diff --git a/qtbase-qatomic-ppc.patch b/qtbase-qatomic-ppc.patch deleted file mode 100644 index 826036e..0000000 --- a/qtbase-qatomic-ppc.patch +++ /dev/null @@ -1,22 +0,0 @@ -Index: qtbase-opensource-src-5.1.1/src/corelib/thread/qoldbasicatomic.h -=================================================================== ---- qtbase-opensource-src-5.1.1.orig/src/corelib/thread/qoldbasicatomic.h -+++ qtbase-opensource-src-5.1.1/src/corelib/thread/qoldbasicatomic.h -@@ -63,7 +63,7 @@ public: - // Atomic API, implemented in qatomic_XXX.h - - int load() const { return _q_value; } -- int loadAcquire() { return _q_value; } -+ int loadAcquire() const { return _q_value; } - void store(int newValue) { _q_value = newValue; } - void storeRelease(int newValue) { _q_value = newValue; } - -@@ -107,7 +107,7 @@ public: - // Atomic API, implemented in qatomic_XXX.h - - T *load() const { return _q_value; } -- T *loadAcquire() { return _q_value; } -+ T *loadAcquire() const { return _q_value; } - void store(T *newValue) { _q_value = newValue; } - void storeRelease(T *newValue) { _q_value = newValue; } -