summaryrefslogtreecommitdiff
path: root/extra/qt
diff options
context:
space:
mode:
authorroot <root@rshg054.dnsready.net>2012-03-02 00:01:28 +0000
committerroot <root@rshg054.dnsready.net>2012-03-02 00:01:28 +0000
commit9ff97db6951550a28a70b27491a446da9d736176 (patch)
tree482d46078cf0367200908e8e26bb335e54429b5b /extra/qt
parent6f297b1cf462a11227d811a87124006c55911d63 (diff)
Fri Mar 2 00:01:27 UTC 2012
Diffstat (limited to 'extra/qt')
-rw-r--r--extra/qt/PKGBUILD17
-rw-r--r--extra/qt/fix-qgraphicsscene-regression.patch55
-rw-r--r--extra/qt/improved-filter-event.patch98
-rw-r--r--extra/qt/qurl-backward-compatibility.patch13
4 files changed, 178 insertions, 5 deletions
diff --git a/extra/qt/PKGBUILD b/extra/qt/PKGBUILD
index 97f3cac36..77c0ea289 100644
--- a/extra/qt/PKGBUILD
+++ b/extra/qt/PKGBUILD
@@ -1,11 +1,11 @@
-# $Id: PKGBUILD 148904 2012-02-05 11:55:04Z ibiru $
+# $Id: PKGBUILD 151653 2012-02-29 18:44:48Z andrea $
# Maintainer: Andrea Scarpino <andrea@archlinux.org>
# Contributor: Pierre Schmitz <pierre@archlinux.de>
pkgbase=qt
pkgname=('qt' 'qt-private-headers')
pkgver=4.8.0
-pkgrel=4
+pkgrel=5
arch=('i686' 'x86_64')
url='http://qt-project.org/'
license=('GPL3' 'LGPL')
@@ -18,19 +18,26 @@ _pkgfqn="${pkgbase}-everywhere-opensource-src-${pkgver}"
source=("http://get.qt.nokia.com/qt/source/${_pkgfqn}.tar.gz"
'assistant.desktop' 'designer.desktop' 'linguist.desktop'
'qtconfig.desktop'
- 'fix-qurl.patch')
+ 'fix-qgraphicsscene-regression.patch'
+ 'improved-filter-event.patch'
+ 'qurl-backward-compatibility.patch')
md5sums=('e8a5fdbeba2927c948d9f477a6abe904'
'fc211414130ab2764132e7370f8e5caa'
'85179f5e0437514f8639957e1d8baf62'
'f11852b97583610f3dbb669ebc3e21bc'
'6b771c8a81dd90b45e8a79afa0e5bbfd'
+ 'c2e91fc028250a590e76effe234468e2'
+ '444ebeb716d7c7379835efb8aa88e6c8'
'7bc255a36733d0fbc80c1902ade4beca')
build() {
cd "${srcdir}"/${_pkgfqn}
- # (FS#27757)
- patch -p1 -i "${srcdir}"/fix-qurl.patch
+ # (FS#28707)
+ patch -p1 -i "${srcdir}"/fix-qgraphicsscene-regression.patch
+ # (FS#27757) (KDEBUG#275469)
+ patch -p1 -i "${srcdir}"/improved-filter-event.patch
+ patch -p1 -i "${srcdir}"/qurl-backward-compatibility.patch
export QT4DIR="${srcdir}"/${_pkgfqn}
export LD_LIBRARY_PATH=${QT4DIR}/lib:${LD_LIBRARY_PATH}
diff --git a/extra/qt/fix-qgraphicsscene-regression.patch b/extra/qt/fix-qgraphicsscene-regression.patch
new file mode 100644
index 000000000..0c0a28a61
--- /dev/null
+++ b/extra/qt/fix-qgraphicsscene-regression.patch
@@ -0,0 +1,55 @@
+From 15c14584199dc43e4a309fc331f3144009008128 Mon Sep 17 00:00:00 2001
+From: Jonathan Liu <net147@gmail.com>
+Date: Fri, 24 Feb 2012 00:42:34 +1100
+Subject: [PATCH] Revert "Don't rely on mapFromGlobal in
+ QGraphicsScenePrivate::itemsAtPosition."
+
+This reverts commit 7c0d15a22266a425c9e9ac0120d6774e120fe01e.
+The commit caused a regression whereby tooltips may be shown even if the
+mouse is not over the item if it has the Qt::ItemIgnoresTransformations
+flag and the QGraphicsView had been scaled.
+
+Task-number: QTBUG-17517
+Task-number: QTBUG-22663
+Change-Id: Ib7fd788d9712c5e659fe07182f9505a4eb135ab2
+Reviewed-by: Andy Shaw <andy.shaw@digia.com>
+Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
+---
+ src/gui/graphicsview/qgraphicsscene.cpp | 10 +++++++---
+ 1 files changed, 7 insertions(+), 3 deletions(-)
+
+diff --git a/src/gui/graphicsview/qgraphicsscene.cpp b/src/gui/graphicsview/qgraphicsscene.cpp
+index 14c0f3c..d1cdd4f 100644
+--- a/src/gui/graphicsview/qgraphicsscene.cpp
++++ b/src/gui/graphicsview/qgraphicsscene.cpp
+@@ -1084,7 +1084,7 @@ void QGraphicsScenePrivate::enableMouseTrackingOnViews()
+ /*!
+ Returns all items for the screen position in \a event.
+ */
+-QList<QGraphicsItem *> QGraphicsScenePrivate::itemsAtPosition(const QPoint &/*screenPos*/,
++QList<QGraphicsItem *> QGraphicsScenePrivate::itemsAtPosition(const QPoint &screenPos,
+ const QPointF &scenePos,
+ QWidget *widget) const
+ {
+@@ -1093,12 +1093,16 @@ QList<QGraphicsItem *> QGraphicsScenePrivate::itemsAtPosition(const QPoint &/*sc
+ if (!view)
+ return q->items(scenePos, Qt::IntersectsItemShape, Qt::DescendingOrder, QTransform());
+
+- const QRectF pointRect(scenePos, QSizeF(1, 1));
++ const QRectF pointRect(QPointF(widget->mapFromGlobal(screenPos)), QSizeF(1, 1));
+ if (!view->isTransformed())
+ return q->items(pointRect, Qt::IntersectsItemShape, Qt::DescendingOrder);
+
+ const QTransform viewTransform = view->viewportTransform();
+- return q->items(pointRect, Qt::IntersectsItemShape,
++ if (viewTransform.type() <= QTransform::TxScale) {
++ return q->items(viewTransform.inverted().mapRect(pointRect), Qt::IntersectsItemShape,
++ Qt::DescendingOrder, viewTransform);
++ }
++ return q->items(viewTransform.inverted().map(pointRect), Qt::IntersectsItemShape,
+ Qt::DescendingOrder, viewTransform);
+ }
+
+--
+1.7.6
+
diff --git a/extra/qt/improved-filter-event.patch b/extra/qt/improved-filter-event.patch
new file mode 100644
index 000000000..b03cdbe94
--- /dev/null
+++ b/extra/qt/improved-filter-event.patch
@@ -0,0 +1,98 @@
+--- qt-opensource-4.8.0.old/src/gui/kernel/qapplication_x11.cpp 2011-12-16 03:22:33.918428374 -0500
++++ qt-opensource-4.8.0.new/src/gui/kernel/qapplication_x11.cpp 2012-01-07 18:18:40.258246384 -0500
+@@ -4244,7 +4205,12 @@ bool QETWidget::translateMouseEvent(cons
+ && (nextEvent.xclient.message_type == ATOM(_QT_SCROLL_DONE) ||
+ (nextEvent.xclient.message_type == ATOM(WM_PROTOCOLS) &&
+ (Atom)nextEvent.xclient.data.l[0] == ATOM(_NET_WM_SYNC_REQUEST))))) {
+- qApp->x11ProcessEvent(&nextEvent);
++ // As we may run through a significant number of a large class of non-MotionNotify
++ // events here, without returning to the event loop, first pass nextEvent to
++ // QAbstractEventDispatcher::filterEvent() to allow applications which override
++ // QAbstractEventDispatcher::filterEvent() to handle the event first.
++ if (!QAbstractEventDispatcher::instance()->filterEvent(&nextEvent))
++ qApp->x11ProcessEvent(&nextEvent);
+ continue;
+ } else if (nextEvent.type != MotionNotify ||
+ nextEvent.xmotion.window != event->xmotion.window ||
+--- qt-opensource-4.8.0.old/src/gui/kernel/qclipboard_x11.cpp 2011-12-08 00:06:02.000000000 -0500
++++ qt-opensource-4.8.0.new/src/gui/kernel/qclipboard_x11.cpp 2012-01-07 18:30:35.298287639 -0500
+@@ -573,7 +573,11 @@ bool QX11Data::clipboardWaitForEvent(Win
+
+ // process other clipboard events, since someone is probably requesting data from us
+ XEvent e;
+- if (XCheckIfEvent(X11->display, &e, checkForClipboardEvents, 0))
++ // Some applications may override QAbstractEventDispatcher::filterEvent(), so
++ // pass event to QAbstractEventDispatcher::filterEvent() before processing in
++ // x11ProcessEvent().
++ if (XCheckIfEvent(X11->display, &e, checkForClipboardEvents, 0) &&
++ !QAbstractEventDispatcher::instance()->filterEvent(&e))
+ qApp->x11ProcessEvent(&e);
+
+ now.start();
+--- qt-opensource-4.8.0.old/src/gui/kernel/qdnd_x11.cpp 2011-12-08 00:06:02.000000000 -0500
++++ qt-opensource-4.8.0.new/src/gui/kernel/qdnd_x11.cpp 2012-01-07 18:28:13.841279478 -0500
+@@ -42,6 +42,7 @@
+ #include "qplatformdefs.h"
+
+ #include "qapplication.h"
++#include "qabstracteventdispatcher.h"
+
+ #ifndef QT_NO_DRAGANDDROP
+
+@@ -1941,7 +1942,11 @@ Qt::DropAction QDragManager::drag(QDrag
+ timer.start();
+ do {
+ XEvent event;
+- if (XCheckTypedEvent(X11->display, ClientMessage, &event))
++ // Some applications may override QAbstractEventDispatcher::filterEvent(), so
++ // pass event to QAbstractEventDispatcher::filterEvent() before processing in
++ // x11ProcessEvent().
++ if (XCheckTypedEvent(X11->display, ClientMessage, &event) &&
++ !QAbstractEventDispatcher::instance()->filterEvent(&event))
+ qApp->x11ProcessEvent(&event);
+
+ // sleep 50 ms, so we don't use up CPU cycles all the time.
+--- qt-opensource-4.8.0.old/src/gui/kernel/qwidget_x11.cpp 2011-12-08 00:06:02.000000000 -0500
++++ qt-opensource-4.8.0.new/src/gui/kernel/qwidget_x11.cpp 2012-01-07 18:29:26.286283657 -0500
+@@ -44,6 +44,7 @@
+ #include "qdesktopwidget.h"
+ #include "qapplication.h"
+ #include "qapplication_p.h"
++#include "qabstracteventdispatcher.h"
+ #include "qnamespace.h"
+ #include "qpainter.h"
+ #include "qbitmap.h"
+@@ -376,17 +377,22 @@ void qt_x11_wait_for_window_manager(QWid
+ do {
+ if (XEventsQueued(X11->display, QueuedAlready)) {
+ XNextEvent(X11->display, &ev);
+- qApp->x11ProcessEvent(&ev);
+-
+- switch (state) {
+- case Initial:
+- if (ev.type == MapNotify && ev.xany.window == winid)
+- state = Mapped;
+- break;
+- case Mapped:
+- if (ev.type == Expose && ev.xany.window == winid)
+- return;
+- break;
++ // Some applications may override QAbstractEventDispatcher::filterEvent(), so
++ // pass event to QAbstractEventDispatcher::filterEvent() before processing in
++ // x11ProcessEvent().
++ if (!QAbstractEventDispatcher::instance()->filterEvent(&ev)) {
++ qApp->x11ProcessEvent(&ev);
++
++ switch (state) {
++ case Initial:
++ if (ev.type == MapNotify && ev.xany.window == winid)
++ state = Mapped;
++ break;
++ case Mapped:
++ if (ev.type == Expose && ev.xany.window == winid)
++ return;
++ break;
++ }
+ }
+ } else {
+ if (!XEventsQueued(X11->display, QueuedAfterFlush))
diff --git a/extra/qt/qurl-backward-compatibility.patch b/extra/qt/qurl-backward-compatibility.patch
new file mode 100644
index 000000000..1c666dba4
--- /dev/null
+++ b/extra/qt/qurl-backward-compatibility.patch
@@ -0,0 +1,13 @@
+diff -up qt-everywhere-opensource-src-4.8.0/src/corelib/io/qurl.cpp.toLocalFile qt-everywhere-opensource-src-4.8.0/src/corelib/io/qurl.cpp
+--- qt-everywhere-opensource-src-4.8.0/src/corelib/io/qurl.cpp.toLocalFile 2011-10-03 22:44:32.000000000 -0500
++++ qt-everywhere-opensource-src-4.8.0/src/corelib/io/qurl.cpp 2011-10-27 12:58:35.706815049 -0500
+@@ -6158,7 +6158,8 @@ QUrl QUrl::fromLocalFile(const QString &
+ QString QUrl::toLocalFile() const
+ {
+ // the call to isLocalFile() also ensures that we're parsed
+- if (!isLocalFile())
++ // Treat URLs with no scheme as local for backward compatibility
++ if (!isLocalFile() && (!d || !d->scheme.isEmpty()))
+ return QString();
+
+ QString tmp;