diff options
author | root <root@rshg054.dnsready.net> | 2012-03-02 00:01:28 +0000 |
---|---|---|
committer | root <root@rshg054.dnsready.net> | 2012-03-02 00:01:28 +0000 |
commit | 9ff97db6951550a28a70b27491a446da9d736176 (patch) | |
tree | 482d46078cf0367200908e8e26bb335e54429b5b /extra/qt | |
parent | 6f297b1cf462a11227d811a87124006c55911d63 (diff) |
Fri Mar 2 00:01:27 UTC 2012
Diffstat (limited to 'extra/qt')
-rw-r--r-- | extra/qt/PKGBUILD | 17 | ||||
-rw-r--r-- | extra/qt/fix-qgraphicsscene-regression.patch | 55 | ||||
-rw-r--r-- | extra/qt/improved-filter-event.patch | 98 | ||||
-rw-r--r-- | extra/qt/qurl-backward-compatibility.patch | 13 |
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; |