Accepting request 247845 from KDE:Qt5

- Update to 5.3.2~git20140904 (r05670f5):
  * Tip of the bugfix 5.3.2 branch

Please copy to 13.2 if possible, as can be seen from the changelog, it contains many useful bugfixes. The 'snapshot' is artificial, as the probably won't be any commits between now and 5.3.2, but release is waiting on some bureaucratic procedures. Thanks!

OBS-URL: https://build.opensuse.org/request/show/247845
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/libqt5-qtbase?expand=0&rev=26
This commit is contained in:
Stephan Kulow 2014-09-08 19:28:18 +00:00 committed by Git OBS Bridge
parent 5520ffd023
commit be03ea6fc1
13 changed files with 289 additions and 753 deletions

View File

@ -1,50 +0,0 @@
From 075c36e39beedb33ec4b239d57075f54acb21acf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Martin=20Gr=C3=A4=C3=9Flin?= <mgraesslin@kde.org>
Date: Mon, 16 Jun 2014 14:20:05 +0200
Subject: [PATCH 1/1] Do not overwrite existing event mask of root window
QXcbScreen installs its own event mask on the screen's root window.
This overwrites any existing event mask already set and by that
breaks applications when a new screen is added.
By first fetching the existing event mask and adding it to the newly
installed event mask, Qt does no longer break applications also
installing an event mask on the root window.
Task-number: QTBUG-39648
Change-Id: I8686dd6ae49d0e807c6fe1ea4a231ff728bfcf25
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Reviewed-by: Uli Schlachter <psychon@znc.in>
Reviewed-by: Gatis Paeglis <gatis.paeglis@digia.com>
---
src/plugins/platforms/xcb/qxcbscreen.cpp | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/src/plugins/platforms/xcb/qxcbscreen.cpp b/src/plugins/platforms/xcb/qxcbscreen.cpp
index 9f19841..01e7846 100644
--- a/src/plugins/platforms/xcb/qxcbscreen.cpp
+++ b/src/plugins/platforms/xcb/qxcbscreen.cpp
@@ -106,6 +106,11 @@ QXcbScreen::QXcbScreen(QXcbConnection *connection, xcb_screen_t *scr,
qDebug(" root ID........: %x", screen()->root);
#endif
+ QScopedPointer<xcb_get_window_attributes_reply_t, QScopedPointerPodDeleter> rootAttribs(
+ xcb_get_window_attributes_reply(xcb_connection(),
+ xcb_get_window_attributes_unchecked(xcb_connection(), screen()->root), NULL));
+ const quint32 existingEventMask = rootAttribs.isNull() ? 0 : rootAttribs->your_event_mask;
+
const quint32 mask = XCB_CW_EVENT_MASK;
const quint32 values[] = {
// XCB_CW_EVENT_MASK
@@ -113,6 +118,7 @@ QXcbScreen::QXcbScreen(QXcbConnection *connection, xcb_screen_t *scr,
| XCB_EVENT_MASK_LEAVE_WINDOW
| XCB_EVENT_MASK_PROPERTY_CHANGE
| XCB_EVENT_MASK_STRUCTURE_NOTIFY // for the "MANAGER" atom (system tray notification).
+ | existingEventMask // don't overwrite the event mask on the root window
};
xcb_change_window_attributes(xcb_connection(), screen()->root, mask, values);
--
1.9.3

View File

@ -1,120 +0,0 @@
From 473ed1c1aa67ceb345b20d13c408ed8bd65a9e41 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Martin=20Gr=C3=A4=C3=9Flin?= <mgraesslin@kde.org>
Date: Wed, 18 Jun 2014 13:03:15 +0200
Subject: [PATCH 1/1] Properly check which OpenGL features are supported
QOpenGLShaderProgram::hasOpenGLShaderPrograms tests whether
QOpenGLFunctions::Shaders is provided for the given context. As the
initialization code assumed OpenGL 2 this always was true. But
unfortunately we still cannot assume that OpenGL 2 is universally
supported. E.g. indirect rendering (no matter how bad that idea is)
does not support OpenGL 2 on all hardware and the Shader related
extensions are not available.
This change makes sure that only when OpenGL 2 is available the
features provided by OpenGL 2 are enabled. If OpenGL 2 is not
available the extensions are tested. The checks are slightly
reordered to not do the extension tests at all if OpenGL 2 is
available.
Task-number: QTBUG-39730
Change-Id: Ic775163e0dcc519925b1287f3c4ca5e8ebf101d5
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
---
src/gui/opengl/qopenglfunctions.cpp | 78 +++++++++++++++++++------------------
1 file changed, 40 insertions(+), 38 deletions(-)
diff --git a/src/gui/opengl/qopenglfunctions.cpp b/src/gui/opengl/qopenglfunctions.cpp
index a0d1775..bc4a714 100644
--- a/src/gui/opengl/qopenglfunctions.cpp
+++ b/src/gui/opengl/qopenglfunctions.cpp
@@ -283,46 +283,48 @@ static int qt_gl_resolve_features()
QSurfaceFormat format = QOpenGLContext::currentContext()->format();
QOpenGLExtensionMatcher extensions;
- // Recognize features by extension name.
- if (extensions.match("GL_ARB_multitexture"))
- features |= QOpenGLFunctions::Multitexture;
- if (extensions.match("GL_ARB_shader_objects"))
- features |= QOpenGLFunctions::Shaders;
- if (extensions.match("GL_EXT_framebuffer_object") ||
- extensions.match("GL_ARB_framebuffer_object"))
- features |= QOpenGLFunctions::Framebuffers;
- if (extensions.match("GL_EXT_blend_color"))
- features |= QOpenGLFunctions::BlendColor;
- if (extensions.match("GL_EXT_blend_equation_separate"))
- features |= QOpenGLFunctions::BlendEquationSeparate;
- if (extensions.match("GL_EXT_blend_func_separate"))
- features |= QOpenGLFunctions::BlendFuncSeparate;
- if (extensions.match("GL_EXT_blend_subtract"))
- features |= QOpenGLFunctions::BlendSubtract;
- if (extensions.match("GL_ARB_texture_compression"))
- features |= QOpenGLFunctions::CompressedTextures;
- if (extensions.match("GL_ARB_multisample"))
- features |= QOpenGLFunctions::Multisample;
- if (extensions.match("GL_ARB_texture_non_power_of_two"))
- features |= QOpenGLFunctions::NPOTTextures |
- QOpenGLFunctions::NPOTTextureRepeat;
-
- // assume version 2.0 or higher
- features |= QOpenGLFunctions::BlendColor |
- QOpenGLFunctions::BlendEquation |
- QOpenGLFunctions::Multitexture |
- QOpenGLFunctions::CompressedTextures |
- QOpenGLFunctions::Multisample |
- QOpenGLFunctions::BlendFuncSeparate |
- QOpenGLFunctions::Buffers |
- QOpenGLFunctions::Shaders |
- QOpenGLFunctions::StencilSeparate |
- QOpenGLFunctions::BlendEquationSeparate |
- QOpenGLFunctions::NPOTTextures |
- QOpenGLFunctions::NPOTTextureRepeat;
-
if (format.majorVersion() >= 3)
features |= QOpenGLFunctions::Framebuffers;
+ else if (extensions.match("GL_EXT_framebuffer_object") ||
+ extensions.match("GL_ARB_framebuffer_object"))
+ features |= QOpenGLFunctions::Framebuffers;
+
+ if (format.majorVersion() >= 2) {
+ features |= QOpenGLFunctions::BlendColor |
+ QOpenGLFunctions::BlendEquation |
+ QOpenGLFunctions::BlendSubtract |
+ QOpenGLFunctions::Multitexture |
+ QOpenGLFunctions::CompressedTextures |
+ QOpenGLFunctions::Multisample |
+ QOpenGLFunctions::BlendFuncSeparate |
+ QOpenGLFunctions::Buffers |
+ QOpenGLFunctions::Shaders |
+ QOpenGLFunctions::StencilSeparate |
+ QOpenGLFunctions::BlendEquationSeparate |
+ QOpenGLFunctions::NPOTTextures |
+ QOpenGLFunctions::NPOTTextureRepeat;
+ } else {
+ // Recognize features by extension name.
+ if (extensions.match("GL_ARB_multitexture"))
+ features |= QOpenGLFunctions::Multitexture;
+ if (extensions.match("GL_ARB_shader_objects"))
+ features |= QOpenGLFunctions::Shaders;
+ if (extensions.match("GL_EXT_blend_color"))
+ features |= QOpenGLFunctions::BlendColor;
+ if (extensions.match("GL_EXT_blend_equation_separate"))
+ features |= QOpenGLFunctions::BlendEquationSeparate;
+ if (extensions.match("GL_EXT_blend_subtract"))
+ features |= QOpenGLFunctions::BlendSubtract;
+ if (extensions.match("GL_EXT_blend_func_separate"))
+ features |= QOpenGLFunctions::BlendFuncSeparate;
+ if (extensions.match("GL_ARB_texture_compression"))
+ features |= QOpenGLFunctions::CompressedTextures;
+ if (extensions.match("GL_ARB_multisample"))
+ features |= QOpenGLFunctions::Multisample;
+ if (extensions.match("GL_ARB_texture_non_power_of_two"))
+ features |= QOpenGLFunctions::NPOTTextures |
+ QOpenGLFunctions::NPOTTextureRepeat;
+ }
const QPair<int, int> version = format.version();
if (version < qMakePair(3, 0)
--
1.9.3

View File

@ -1,236 +0,0 @@
From 884b38157689a893ace0a4c793fab921167abb2c Mon Sep 17 00:00:00 2001
From: David Faure <david.faure@kdab.com>
Date: Sun, 8 Jun 2014 21:46:24 +0200
Subject: [PATCH 1/1] Fix data race on QLoggingCategory when using qDebug from
multiple threads
setEnabled() would race with isEnabled()/isDebugEnabled()/etc.
Change-Id: I2004cba81d5417a634b97f5c2f98d3a4ab71770d
Reviewed-by: David Faure <david.faure@kdab.com>
---
src/corelib/arch/qatomic_bootstrap.h | 4 ++-
src/corelib/io/qloggingcategory.cpp | 36 ++++++++++++++++++--------
src/corelib/io/qloggingcategory.h | 35 +++++++++++++++++++------
tests/auto/corelib/io/qdebug/qdebug.pro | 2 +-
tests/auto/corelib/io/qdebug/tst_qdebug.cpp | 40 +++++++++++++++++++++++++++++
5 files changed, 97 insertions(+), 20 deletions(-)
diff --git a/src/corelib/arch/qatomic_bootstrap.h b/src/corelib/arch/qatomic_bootstrap.h
index 7f17387..0d6843a 100644
--- a/src/corelib/arch/qatomic_bootstrap.h
+++ b/src/corelib/arch/qatomic_bootstrap.h
@@ -67,8 +67,10 @@ template <typename T> struct QAtomicOps: QGenericAtomicOps<QAtomicOps<T> >
return --_q_value != 0;
}
- static bool testAndSetRelaxed(T &_q_value, T expectedValue, T newValue) Q_DECL_NOTHROW
+ static bool testAndSetRelaxed(T &_q_value, T expectedValue, T newValue, T *currentValue = 0) Q_DECL_NOTHROW
{
+ if (currentValue)
+ *currentValue = _q_value;
if (_q_value == expectedValue) {
_q_value = newValue;
return true;
diff --git a/src/corelib/io/qloggingcategory.cpp b/src/corelib/io/qloggingcategory.cpp
index 518052e..45fab11 100644
--- a/src/corelib/io/qloggingcategory.cpp
+++ b/src/corelib/io/qloggingcategory.cpp
@@ -50,6 +50,18 @@ const char qtDefaultCategoryName[] = "default";
Q_GLOBAL_STATIC_WITH_ARGS(QLoggingCategory, qtDefaultCategory,
(qtDefaultCategoryName))
+#ifndef Q_ATOMIC_INT8_IS_SUPPORTED
+static void setBoolLane(QBasicAtomicInt *atomic, bool enable, int shift)
+{
+ const int bit = 1 << shift;
+
+ if (enable)
+ atomic->fetchAndOrRelaxed(bit);
+ else
+ atomic->fetchAndAndRelaxed(~bit);
+}
+#endif
+
/*!
\class QLoggingCategory
\inmodule QtCore
@@ -171,13 +183,11 @@ Q_GLOBAL_STATIC_WITH_ARGS(QLoggingCategory, qtDefaultCategory,
*/
QLoggingCategory::QLoggingCategory(const char *category)
: d(0),
- name(0),
- enabledDebug(true),
- enabledWarning(true),
- enabledCritical(true)
+ name(0)
{
Q_UNUSED(d);
Q_UNUSED(placeholder);
+ enabled.store(0x01010101); // enabledDebug = enabledWarning = enabledCritical = true;
const bool isDefaultCategory
= (category == 0) || (strcmp(category, qtDefaultCategoryName) == 0);
@@ -249,9 +259,9 @@ QLoggingCategory::~QLoggingCategory()
bool QLoggingCategory::isEnabled(QtMsgType msgtype) const
{
switch (msgtype) {
- case QtDebugMsg: return enabledDebug;
- case QtWarningMsg: return enabledWarning;
- case QtCriticalMsg: return enabledCritical;
+ case QtDebugMsg: return isDebugEnabled();
+ case QtWarningMsg: return isWarningEnabled();
+ case QtCriticalMsg: return isCriticalEnabled();
case QtFatalMsg: return true;
}
return false;
@@ -270,9 +280,15 @@ bool QLoggingCategory::isEnabled(QtMsgType msgtype) const
void QLoggingCategory::setEnabled(QtMsgType type, bool enable)
{
switch (type) {
- case QtDebugMsg: enabledDebug = enable; break;
- case QtWarningMsg: enabledWarning = enable; break;
- case QtCriticalMsg: enabledCritical = enable; break;
+#ifdef Q_ATOMIC_INT8_IS_SUPPORTED
+ case QtDebugMsg: bools.enabledDebug.store(enable); break;
+ case QtWarningMsg: bools.enabledWarning.store(enable); break;
+ case QtCriticalMsg: bools.enabledCritical.store(enable); break;
+#else
+ case QtDebugMsg: setBoolLane(&enabled, enable, DebugShift); break;
+ case QtWarningMsg: setBoolLane(&enabled, enable, WarningShift); break;
+ case QtCriticalMsg: setBoolLane(&enabled, enable, CriticalShift); break;
+#endif
case QtFatalMsg: break;
}
}
diff --git a/src/corelib/io/qloggingcategory.h b/src/corelib/io/qloggingcategory.h
index 4aec8e6..573af21 100644
--- a/src/corelib/io/qloggingcategory.h
+++ b/src/corelib/io/qloggingcategory.h
@@ -57,10 +57,15 @@ public:
bool isEnabled(QtMsgType type) const;
void setEnabled(QtMsgType type, bool enable);
- bool isDebugEnabled() const { return enabledDebug; }
- bool isWarningEnabled() const { return enabledWarning; }
- bool isCriticalEnabled() const { return enabledCritical; }
-
+#ifdef Q_ATOMIC_INT8_IS_SUPPORTED
+ bool isDebugEnabled() const { return bools.enabledDebug.load(); }
+ bool isWarningEnabled() const { return bools.enabledWarning.load(); }
+ bool isCriticalEnabled() const { return bools.enabledCritical.load(); }
+#else
+ bool isDebugEnabled() const { return enabled.load() >> DebugShift & 1; }
+ bool isWarningEnabled() const { return enabled.load() >> WarningShift & 1; }
+ bool isCriticalEnabled() const { return enabled.load() >> CriticalShift & 1; }
+#endif
const char *categoryName() const { return name; }
// allows usage of both factory method and variable in qCX macros
@@ -78,10 +83,24 @@ private:
void *d; // reserved for future use
const char *name;
- bool enabledDebug;
- bool enabledWarning;
- bool enabledCritical;
- bool placeholder[5]; // reserve for future use
+#ifdef Q_BIG_ENDIAN
+ enum { DebugShift = 0, WarningShift = 8, CriticalShift = 16 };
+#else
+ enum { DebugShift = 24, WarningShift = 16, CriticalShift = 8 };
+#endif
+
+ struct AtomicBools {
+#ifdef Q_ATOMIC_INT8_IS_SUPPORTED
+ QBasicAtomicInteger<bool> enabledDebug;
+ QBasicAtomicInteger<bool> enabledWarning;
+ QBasicAtomicInteger<bool> enabledCritical;
+#endif
+ };
+ union {
+ AtomicBools bools;
+ QBasicAtomicInt enabled;
+ };
+ bool placeholder[4]; // reserve for future use
};
#define Q_DECLARE_LOGGING_CATEGORY(name) \
diff --git a/tests/auto/corelib/io/qdebug/qdebug.pro b/tests/auto/corelib/io/qdebug/qdebug.pro
index 820c17f..5e902bb 100644
--- a/tests/auto/corelib/io/qdebug/qdebug.pro
+++ b/tests/auto/corelib/io/qdebug/qdebug.pro
@@ -1,5 +1,5 @@
CONFIG += testcase parallel_test
TARGET = tst_qdebug
-QT = core testlib
+QT = core testlib concurrent
SOURCES = tst_qdebug.cpp
DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0
diff --git a/tests/auto/corelib/io/qdebug/tst_qdebug.cpp b/tests/auto/corelib/io/qdebug/tst_qdebug.cpp
index 80144db..8fd830a 100644
--- a/tests/auto/corelib/io/qdebug/tst_qdebug.cpp
+++ b/tests/auto/corelib/io/qdebug/tst_qdebug.cpp
@@ -44,6 +44,9 @@
#include <QtCore/QtDebug>
#include <QtTest/QtTest>
+#include <QtConcurrentRun>
+#include <QFutureSynchronizer>
+
class tst_QDebug: public QObject
{
Q_OBJECT
@@ -59,6 +62,7 @@ private slots:
void qDebugQLatin1String() const;
void textStreamModifiers() const;
void defaultMessagehandler() const;
+ void threadSafety() const;
};
void tst_QDebug::assignment() const
@@ -305,5 +309,41 @@ void tst_QDebug::defaultMessagehandler() const
QVERIFY(same);
}
+QMutex s_mutex;
+QStringList s_messages;
+QSemaphore s_sema;
+
+static void threadSafeMessageHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg)
+{
+ QMutexLocker lock(&s_mutex);
+ s_messages.append(msg);
+ Q_UNUSED(type);
+ Q_UNUSED(context);
+}
+
+static void doDebug() // called in each thread
+{
+ s_sema.acquire();
+ qDebug() << "doDebug";
+}
+
+void tst_QDebug::threadSafety() const
+{
+ MessageHandlerSetter mhs(threadSafeMessageHandler);
+ const int numThreads = 10;
+ QThreadPool::globalInstance()->setMaxThreadCount(numThreads);
+ QFutureSynchronizer<void> sync;
+ for (int i = 0; i < numThreads; ++i) {
+ sync.addFuture(QtConcurrent::run(&doDebug));
+ }
+ s_sema.release(numThreads);
+ sync.waitForFinished();
+ QMutexLocker lock(&s_mutex);
+ QCOMPARE(s_messages.count(), numThreads);
+ for (int i = 0; i < numThreads; ++i) {
+ QCOMPARE(s_messages.at(i), QStringLiteral("doDebug"));
+ }
+}
+
QTEST_MAIN(tst_QDebug);
#include "tst_qdebug.moc"
--
1.9.3

View File

@ -1,46 +0,0 @@
From 7a4dcbaabf037a6913a5662ebb74cc47e04673b9 Mon Sep 17 00:00:00 2001
From: David Faure <david.faure@kdab.com>
Date: Sun, 8 Jun 2014 15:39:00 +0200
Subject: [PATCH 1/1] QDBus: fix data race on isDebugging bool
Change-Id: Id0b8bf8dac570abfc6c8768bd4264650ae0c199b
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
---
src/dbus/qdbusintegrator.cpp | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
diff --git a/src/dbus/qdbusintegrator.cpp b/src/dbus/qdbusintegrator.cpp
index 1fef6d4..260c188 100644
--- a/src/dbus/qdbusintegrator.cpp
+++ b/src/dbus/qdbusintegrator.cpp
@@ -73,8 +73,8 @@
QT_BEGIN_NAMESPACE
-static bool isDebugging;
-#define qDBusDebug if (!::isDebugging); else qDebug
+static QBasicAtomicInt isDebugging = Q_BASIC_ATOMIC_INITIALIZER(-1);
+#define qDBusDebug if (::isDebugging == 0); else qDebug
Q_GLOBAL_STATIC_WITH_ARGS(const QString, orgFreedesktopDBusString, (QLatin1String(DBUS_SERVICE_DBUS)))
@@ -1022,13 +1022,12 @@ QDBusConnectionPrivate::QDBusConnectionPrivate(QObject *p)
anonymousAuthenticationAllowed(false)
{
static const bool threads = q_dbus_threads_init_default();
- static const int debugging = qgetenv("QDBUS_DEBUG").toInt();
- ::isDebugging = debugging;
+ if (::isDebugging == -1)
+ ::isDebugging = qgetenv("QDBUS_DEBUG").toInt();
Q_UNUSED(threads)
- Q_UNUSED(debugging)
#ifdef QDBUS_THREAD_DEBUG
- if (debugging > 1)
+ if (::isDebugging > 1)
qdbusThreadDebug = qdbusDefaultThreadDebug;
#endif
--
1.9.3

View File

@ -1,44 +0,0 @@
From 51d6df1d18322c630f79567ed22de3718436d78d Mon Sep 17 00:00:00 2001
From: Gatis Paeglis <gatis.paeglis@digia.com>
Date: Tue, 17 Jun 2014 11:41:23 +0200
Subject: [PATCH 1/1] Translate Super/Hyper keys to MetaModifier
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This is how it was done in Qt4. If users are interested
in an actual X11 keysym they can use QKeyEvent::nativeVirtualKey().
Change-Id: I710664e48c5db1633a357aa0a5d238f3453103ab
Task-number: QTBUG-38428
Reviewed-by: Christian Stenger <christian.stenger@digia.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Sebastian Kügler <sebas@kde.org>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
---
src/plugins/platforms/xcb/qxcbkeyboard.cpp | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/src/plugins/platforms/xcb/qxcbkeyboard.cpp b/src/plugins/platforms/xcb/qxcbkeyboard.cpp
index 69601f4..4c84b19 100644
--- a/src/plugins/platforms/xcb/qxcbkeyboard.cpp
+++ b/src/plugins/platforms/xcb/qxcbkeyboard.cpp
@@ -929,6 +929,15 @@ int QXcbKeyboard::keysymToQtKey(xcb_keysym_t key) const
i += 2;
}
+ if (rmod_masks.meta) {
+ // translate Super/Hyper keys to Meta if we're using them as the MetaModifier
+ if (rmod_masks.meta == rmod_masks.super && (code == Qt::Key_Super_L || code == Qt::Key_Super_R)) {
+ code = Qt::Key_Meta;
+ } else if (rmod_masks.meta == rmod_masks.hyper && (code == Qt::Key_Hyper_L || code == Qt::Key_Hyper_R)) {
+ code = Qt::Key_Meta;
+ }
+ }
+
return code;
}
--
1.9.3

View File

@ -1,33 +0,0 @@
From f1bce3bc17ebb99b1512b07499988538465c78a2 Mon Sep 17 00:00:00 2001
From: Allan Sandfeld Jensen <allan.jensen@digia.com>
Date: Thu, 21 Aug 2014 15:33:09 +0200
Subject: [PATCH] Avoid crash if querying device that has gone away
A device removed very fast after being inserted might disappear while
we are still seting it up. We must therefore check if we indeed still
get a matching device
Task-number: QTBUG-40820
Change-Id: I4372fb1932264e5799f37cea0d016795e28ebed6
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
---
src/plugins/platforms/xcb/qxcbconnection_xi2.cpp | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
--- qtbase-opensource-src-5.3.1.orig/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
+++ qtbase-opensource-src-5.3.1/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
@@ -328,10 +328,12 @@ XInput2DeviceData *QXcbConnection::devic
{
XInput2DeviceData *dev = m_touchDevices[id];
if (!dev) {
- int unused = 0;
+ int nrDevices = 0;
QTouchDevice::Capabilities caps = 0;
dev = new XInput2DeviceData;
- dev->xiDeviceInfo = XIQueryDevice(static_cast<Display *>(m_xlib_display), id, &unused);
+ dev->xiDeviceInfo = XIQueryDevice(static_cast<Display *>(m_xlib_display), id, &nrDevices);
+ if (nrDevices <= 0)
+ return 0;
int type = -1;
int maxTouchPoints = 1;
bool hasRelativeCoords = false;

View File

@ -1,39 +0,0 @@
From e98c461d43ea07c73898c93debe9285029ba0416 Mon Sep 17 00:00:00 2001
From: Joni Poikelin <joni.poikelin@digia.com>
Date: Thu, 12 Jun 2014 10:28:23 +0300
Subject: [PATCH] XCB: Fix leak with touch devices
Task-number: QTBUG-39596
Change-Id: I4225d5a1ab4939280640b35d30c283f056a56519
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
---
src/plugins/platforms/xcb/qxcbconnection_xi2.cpp | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp b/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
index c296618..a574dca 100644
--- a/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
+++ b/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
@@ -228,6 +228,11 @@ void QXcbConnection::xi2SetupDevices()
void QXcbConnection::finalizeXInput2()
{
+ foreach (XInput2DeviceData *dev, m_touchDevices) {
+ if (dev->xiDeviceInfo)
+ XIFreeDeviceInfo(dev->xiDeviceInfo);
+ delete dev;
+ }
}
void QXcbConnection::xi2Select(xcb_window_t window)
@@ -393,6 +398,7 @@ XInput2DeviceData *QXcbConnection::deviceForId(int id)
m_touchDevices[id] = dev;
} else {
m_touchDevices.remove(id);
+ XIFreeDeviceInfo(dev->xiDeviceInfo);
delete dev;
dev = 0;
}
--
1.8.4.5

View File

@ -1,128 +0,0 @@
From 19d289ab1b5bde3e136765e5432b5c7d004df3a4 Mon Sep 17 00:00:00 2001
From: Maarten Lankhorst <maarten.lankhorst@canonical.com>
Date: Tue, 20 May 2014 09:57:39 +0200
Subject: [PATCH] Listen to touch events on the master device instead of slave.
Listening to touch events on the master prevents pointer emulation
events from being generated, alleviating the need to grab.
Grabbing on the slave device is buggy, and breaks pointer emulation
on all current servers that support XInput 2.2 due to a bug in the
server, and will also grab unwanted touch events.
For reference, see https://bugs.freedesktop.org/show_bug.cgi?id=78345
Reverts 2c65b78b400ec27e6e559829b9a970dca2df6669. The idea of
enabling each touchscreen separately was introduced in
4dbf574b7acb7ae8f852219700afa95f8d568f0e; that aspect is also
reverted.
Change-Id: I30d36397aa4ff2fb7a8ad2bbb94c2a13abd472b4
Task-number: QTBUG-38625
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
---
src/plugins/platforms/xcb/qxcbconnection_xi2.cpp | 49 +++++++-----------------
1 file changed, 13 insertions(+), 36 deletions(-)
diff --git a/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp b/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
index a574dca..cf809b3 100644
--- a/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
+++ b/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
@@ -251,14 +251,13 @@ void QXcbConnection::xi2Select(xcb_window_t window)
XIEventMask mask;
mask.mask_len = sizeof(bitMask);
mask.mask = xiBitMask;
- // Enable each touchscreen
- foreach (XInput2DeviceData *dev, m_touchDevices) {
- mask.deviceid = dev->xiDeviceInfo->deviceid;
+ if (!m_touchDevices.isEmpty()) {
+ mask.deviceid = XIAllMasterDevices;
Status result = XISelectEvents(xDisplay, window, &mask, 1);
- // If we have XInput >= 2.2 and successfully enable a touchscreen, then
- // it will provide touch only. In most other cases, there will be
- // emulated mouse events from the driver. If not, then Qt must do its
- // own mouse emulation to enable interaction with mouse-oriented QWidgets.
+ // If we select for touch events on the master pointer, XInput2
+ // will not synthesize mouse events. This means Qt must do it,
+ // which is also preferable, since Qt can control better when
+ // to do so.
if (m_xi2Minor >= 2 && result == Success)
has_touch_without_mouse_emulation = true;
}
@@ -272,10 +271,10 @@ void QXcbConnection::xi2Select(xcb_window_t window)
// similar handlers useless and we have no intention to infect
// all the pure xcb code with Xlib-based XI2.
if (!m_tabletData.isEmpty()) {
- unsigned int tabletBitMask = bitMask;
+ unsigned int tabletBitMask;
unsigned char *xiTabletBitMask = reinterpret_cast<unsigned char *>(&tabletBitMask);
QVector<XIEventMask> xiEventMask(m_tabletData.count());
- tabletBitMask |= XI_ButtonPressMask;
+ tabletBitMask = XI_ButtonPressMask;
tabletBitMask |= XI_ButtonReleaseMask;
tabletBitMask |= XI_MotionMask;
tabletBitMask |= XI_PropertyEventMask;
@@ -294,24 +293,18 @@ void QXcbConnection::xi2Select(xcb_window_t window)
// Enable each scroll device
if (!m_scrollingDevices.isEmpty()) {
QVector<XIEventMask> xiEventMask(m_scrollingDevices.size());
- unsigned int scrollBitMask = 0;
+ unsigned int scrollBitMask;
unsigned char *xiScrollBitMask = reinterpret_cast<unsigned char *>(&scrollBitMask);
+
scrollBitMask = XI_MotionMask;
scrollBitMask |= XI_ButtonReleaseMask;
- bitMask |= XI_MotionMask;
- bitMask |= XI_ButtonReleaseMask;
int i=0;
Q_FOREACH (const ScrollingDevice& scrollingDevice, m_scrollingDevices) {
if (tabletDevices.contains(scrollingDevice.deviceId))
continue; // All necessary events are already captured.
xiEventMask[i].deviceid = scrollingDevice.deviceId;
- if (m_touchDevices.contains(scrollingDevice.deviceId)) {
- xiEventMask[i].mask_len = sizeof(bitMask);
- xiEventMask[i].mask = xiBitMask;
- } else {
- xiEventMask[i].mask_len = sizeof(scrollBitMask);
- xiEventMask[i].mask = xiScrollBitMask;
- }
+ xiEventMask[i].mask_len = sizeof(scrollBitMask);
+ xiEventMask[i].mask = xiScrollBitMask;
i++;
}
XISelectEvents(xDisplay, window, xiEventMask.data(), i);
@@ -458,7 +451,7 @@ void QXcbConnection::xi2HandleEvent(xcb_ge_event_t *event)
fixed1616ToReal(xiDeviceEvent->root_x), fixed1616ToReal(xiDeviceEvent->root_y) );
if (QXcbWindow *platformWindow = platformWindowFromId(xiDeviceEvent->event)) {
- XInput2DeviceData *dev = deviceForId(xiEvent->deviceid);
+ XInput2DeviceData *dev = deviceForId(xiDeviceEvent->sourceid);
Q_ASSERT(dev);
const bool firstTouch = m_touchPoints.isEmpty();
if (xiEvent->evtype == XI_TouchBegin) {
@@ -563,22 +556,6 @@ void QXcbConnection::xi2HandleEvent(xcb_ge_event_t *event)
qDebug() << " touchpoint " << touchPoint.id << " state " << touchPoint.state << " pos norm " << touchPoint.normalPosition <<
" area " << touchPoint.area << " pressure " << touchPoint.pressure;
QWindowSystemInterface::handleTouchEvent(platformWindow->window(), xiEvent->time, dev->qtTouchDevice, m_touchPoints.values());
- if (has_touch_without_mouse_emulation) {
- // We need to grab the touch event to prevent mouse emulation.
- if (xiEvent->evtype == XI_TouchBegin) {
- XIEventMask xieventmask;
- unsigned int bitMask = 0;
- unsigned char *xiBitMask = reinterpret_cast<unsigned char *>(&bitMask);
- xieventmask.deviceid = xiEvent->deviceid;
- xieventmask.mask = xiBitMask;
- xieventmask.mask_len = sizeof(bitMask);
- bitMask |= XI_TouchBeginMask;
- bitMask |= XI_TouchUpdateMask;
- bitMask |= XI_TouchEndMask;
- XIGrabDevice(static_cast<Display *>(m_xlib_display), xiEvent->deviceid, platformWindow->winId(), xiEvent->time, None, GrabModeAsync, GrabModeAsync, true, &xieventmask);
- } else if (xiEvent->evtype == XI_TouchEnd)
- XIUngrabDevice(static_cast<Display *>(m_xlib_display), xiEvent->deviceid, xiEvent->time);
- }
if (touchPoint.state == Qt::TouchPointReleased)
// If a touchpoint was released, we can forget it, because the ID won't be reused.
m_touchPoints.remove(touchPoint.id);
--
1.8.4.5

View File

@ -1,3 +1,245 @@
-------------------------------------------------------------------
Thu Sep 4 20:37:34 UTC 2014 - hrvoje.senjan@gmail.com
- Update to 5.3.2~git20140904 (r05670f5):
* Tip of the bugfix 5.3.2 branch:
* Recreate child windows when changing screens
* QCoreTextFontDatabase: Remove number type asserts.
* QGLXContext survives screen removal
* CoreWLan: terminate scan thread in QCoreWlanEngine destructor
* Also print the class name in the QObject::killTimer error msg
* Initialize textureId in platform backing store
* Doc: corrected autolink errors corelib io
* Avoid crash if querying device that has gone away
* Doc: corrected autolink errors Qjsonvalue
* Network: Fix NTLM (SSPI) with HTTP and HTTPS proxies
* remove always ask option.
* Fix handling QT_IM_MODULE=none
* xcb: use keyboard event source window to determine
auto-repeat valuen
* Fix invalid memcpy(dst, src) calls where dst == src
* Fix several regressions in font selection
* Detect wrongly labelled wheel buttons
* Make QWindowContainer handle drag'n'drop
* Resize correctly on orientation change.
* Use correct size in fullscreen mode
* Properly null-terminate ifreq::irf_name
* fingerpaint example: be sensitive to pressure only
when supported
* Fix a memory leak in QFseventsFileSystemWatcherEngine
* Do not set QMAKE_{INC,LIB}DIR_{OPENGL,X11} in the
freebsd mkspecs.
* refactor disconnectFromFtp to remove cached entries
when necessary
* Remove reference to gdb_dwarf_index from the
freebsd-clang mkspec.
* Fix mistake in function extraTryFontsForFamily
* Fix rendering of fonts matched based on stretch
* Fix x86/32-bit build when using an old version of gcc
* Fix selection of fonts based on styleName
* QFusionStyle paints sliders outside of clip
* Set iMX device specific compiler flags to QMAKE_CFLAGS
* Fix QPainter::drawPolyline() painting errors with
cosmetic pen
* Let QImage::mirrored() retain dots-per-meter settings
* Make sure we don't cache old file sizes prior to new writes
* Correct the SYNC hint for the release barrier
* Fix QT_NO_REGULAREXPRESSION build
* Fix QT_NO_ANIMATION build
* Fix build with QT_NO_MDIAREA
* Show the correct cursor for QLineEdit's side buttons.
* Fix disconnect()ing from signals declared in a base class
* Fix rendering alpha-blended text which needs to be
clipped at the top.
* Fix build due to missing include when using a minimal config.
* Fix build with QT_NO_DRAGANDDROP
* Font Database: Add support for private, system UI
font families
* Apply upstream patch r1498 to our PCRE copy
* Apply upstream patch r1495 to our PCRE copy
* Initialize member.
* Document missing QLatin1String methods
* network tests: add manual test for auth / proxy auth
* Uncomment some tests which accidently got commented
* Both HiQualAA and normal AA should mean
antialiasing in rasterengine.
* Check if Start/EndPage returns non-positive value
when error checking
* GTK file dialog: pre-fill the filename if given to a
Save dialog
* QFileDialog docs: remove misleading sentence about
static functions
* Doc: Placed Qt OpenGL class convention in code block.
* Undo: Fix state entry bug for parallel state groups
* Do not add QOffscreenSurface windows to the global list
* tst_QHash: check which of several equal keys is inserted
* OpenGL: destroy QGLContext allocated by
QGLContext::fromOpenGLContext
* tst_QSet: check which of several equal elements is inserted
* fix paths in installed qtmain.prl
* add /ENTRY:main only for target builds
* avoid that CROSS_COMPILE affects host builds
* Add missing power button keycode to keymap
* Android: export ANDROID_SDK_BUILD_TOOLS_REVISION.
* cocoa: Fix compiler warnings about unused functions.
* Propagate swapInterval to QGLFormat
* Fix double clicks in eglfs
* Work around ICC bug in local static symbols for
Q_GLOBAL_STATIC
* QCoreTextFontDatabase: Fix font weight value when
populating a family
* Don't convert signed to unsigned when we need all 32bit
* Fix compilation if EC is disabled in OpenSSL
* Fix warning message when re-setting text on tooltip
* Improve dbus cross compilation
* Fix buffer overrun error with some proxy servers
* QNAM: Fix CPU load for limited upload QIODevice
* qmake: Document the "aux" template type.
* Use the stateless UTF-8 encoder in QStringRef::toUtf8
* Doc: corrected autolink errors in qnamespace.qdoc
* QPixmap::fromImage() should detach when changing
QImage format
* generate QGL header file from qgl.h
* Ensure transient parents are top level widgets.
* Added stream version into network cache file format
* make QtWidgets claim style plugins
* CMake: Don't check the existence of GL files in the
Qt5Gui package.
* QSplitter: Exclude top level widgets from child
event handling.
* Doc: Hide QTextInlineObject constructor from
the documentation
* Work around ICC bug in brace initializations
containing constexpr
* Doc: edited qtxml.qdocconf
* xcb: QTabletEvents and proximity events correctly
identify the tool
* Fixed wrong function name in a file snippet
* XCB: Enable loading of the Qt::DragLinkCursor
* Fix fallbacks for adapted common script
* Fix fallbacks for adapted common script
* QSslCertificate: blacklist NIC certificates from India
* Doc: moved saxbookmarks example files
* tst_qdir: Move QFINDTESTDATA() from init() to constructor.
* Doc: moved streambookmarks example files
* Don't assert when HB-old is unable to deal with surrogates
* REG: Fix nbsp in QTextLayout
* Support getting test data from qrc
* Document QApplication::cursorFlashTime() can return -1
* Fix for code snippet in commandlineparser documentation
* Doc: removed trolltech.com from namespace in manual
qdocconf file.
* Fix typo in QGraphicsView documentation.
* Fix QTimer with negative interval in
QWidgetLineControl::setCursorBlinkPeriod
* Attempt to work with Visual Studio in -Za (strict ANSI) mode
* Improve QListWidget documentation.
* Fix debug output of QTouchEvent.
* Doc: fix a link in QAbstractOpenGLFunctions documentation
* Accessibility Linux: Fix crashes when accessing
invalid functions
* move loading of testability driver from QApplication
to QGuiApplication
* QPdf::addImage(): avoid a QImage detach when it's in an
acceptable Format
* Make QDom/QXmlSimpleReader reentrant.
* Move QXmlReaderPrivate to private header.
* Mac: Don't register for Pan Gestures.
* Add opt-out environment variable for @2x images
* Listen to touch events on the master device instead of slave.
* add support for device linux-arm-hisilicon-hix5hd2-g++
* Make tst_QLocale::macDefaultLocale() more robust
* Fix some tst_qwidget test cases
* xcb: make sure to update window title when it is changed
* Skip unstable autotests in QtBase.
* Empty icons and Cocoa menu items.
* Address Book example: Fix QTableView column sorting
* QOpenGLTexture: fix the feature test for Buffer Textures
* qDebug: fix data race in qt_message_print
* [bcm97425] Fix parameter issue in platformDestroy hook
* Doc: Various \note fixes in Qt namespace documentation.
* Fix QFileInfoGatherer threading issue
* Doc: Fix typo in QScopedValueRollback
* Fix pixel noise in X11 systray icons that are not 22x22
* Don't compare the target methods for SlotObject connections
* qtoolbar: add missing header on OSX.
* Remove bogus nullptr check for reference
* Support MIPS atomic on pre-MIPS32 architectures
* Enable sparc detection.
* Remove -Wcast-align from QMAKE_CXXFLAGS.
* Create the 64 bits version strings for MIPS, SPARC and S390
* Add a comment stating QMutex::isRecursive should be made
const in Qt6
* Fix QMutex documentation saying some function are static
while they are not
* Delete qml_plugin_import.cpp file only during distclean
* WinRT: no read-only paths in QStandardpaths::writableLocation
* Fix compilation on Windows without precompiled headers
* QColorDialog: Do not update custom/standard color cells
while picking.
* Fix -Werror compilation on big-endian
* CMake: Allow modules to specify the location of tests.
* Mark behavior of QFileInfo::absoluteFilePath as undefined in
corner cases
* Translate Super/Hyper keys to MetaModifier
* Fix logging file location docs
* CMake: Report an error if unit tests are not found for
a module.
* Fix QRingBuffer::readPointerAtPosition()
* Make the fetchAndAddRelaxed function a member template
* Doc: qInstallMessageHandler cannot return 0.
* GIF decoding: do not seek() if the image is loaded
over the network
* network internals: do not try to cache a deleted entry
* Fix memory leaks in QFseventsFileSystemWatcherEngine
* Simplify mirroring code and add tests for non-aliged
1 bit images
* Add that the corner settings are saved/restored
with the state
* Correct grammar of missing Q_OBJECT macro warning.
* Doc: Fix docs for QFontMetrics::height() to match code
* Fix installation of private headers generated
by wayland-scanner
* add buildsystem/qmake changelog
* CMake: Load plugin files unconditionally if present.
* QIcon: Prefer high-quality images of Windows .ico files.
* tst_qicon: Resolve all files using QFINDTESTDATA().
* Move most of the QLibraryPrivate initialization to
its constructor
* QComboBox: update focus policy when setting a new line edit
* QDBus: fix data race on isDebugging bool
* When filling the path it should use the painter's pen
not the state's
* Fix data race on QLoggingCategory when using qDebug
from multiple threads
* Remove the use of QT_STATIC_CONST in QtSql
* Fix compilation with /Zc:strictStrings
* Correct QImage::fill(uint) on RGBA8888 formats
* XCB: Fix leak with touch devices
* pass a pointer instead of a reference to initFrom()
* Properly check which OpenGL features are supported
* Do not overwrite existing event mask of root window
* Remove the widget from the stylesheet cache before polishing
* QDnsLookup: Fix build with uClibc
* Remove unused define XCB_USE_IBUS.
* Attempt to fix intel compiler build error.
* Use QModelIndex to get the data from underlying model
* QGuiApplication: Document -plugin command line argument.
* Fix compilation in under -no-c++11 mode
* Fix compilation with the Intel compiler on certain systems
- Drop patches merged upstream:
0001-Do-not-overwrite-existing-event-mask-of-root-window.patch,
0002-Properly-check-which-OpenGL-features-are-supported.patch,
0003-Fix-data-race-on-QLoggingCategory-when-using-qDebug-.patch,
0004-QDBus-fix-data-race-on-isDebugging-bool.patch,
0005-Translate-Super-Hyper-keys-to-MetaModifier.patch,
libqt5-avoid-crash-during-querying-device.patch,
libqt5-fix-leak-with-touch-devices-in-xcb.patch and
libqt5-listen-to-touch-events-on-the-master-device.patch
- Added protect-geometry-QTBUG-40584.patch, to workaround QTBUG-40584,
so widget geometry is preserved
- Reorder patches
-------------------------------------------------------------------
Fri Aug 29 06:57:03 UTC 2014 - mlin@suse.com

View File

@ -16,65 +16,48 @@
#
%define qt5_snapshot 0
%define qt5_snapshot 1
%define journald 0
Name: libqt5-qtbase
Version: 5.3.1
Version: 5.3.2~git20140904
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.3.1
%define so_version 5.3.1
%if %qt5_snapshot
%define tar_version qtbase-%{real_version}
%else
%define real_version 5.3.2
%define so_version 5.3.2
%define tar_version qtbase-opensource-src-%{real_version}
%endif
Source: %{tar_version}.tar.xz
# to get mtime of file:
Source1: libqt5-qtbase.changes
Source2: macros.qt5
Source3: baselibs.conf
# patches 0-1000 are openSUSE and/or non-upstream(able) patches #
# PATCH-FIX-UPSTREAM libqt5-libtool-nodate.diff -- for ommiting date/time on build
Patch109: libqt5-libtool-nodate.diff
Patch0: libqt5-libtool-nodate.diff
# PATCH-FIX-UPSTREAM qmake-add-usr-include.diff -- explicitly include /usr/include path
Patch131: qmake-add-usr-include.diff
Patch1: 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
# PATCH-FIX-UPSTREAM libqt5-add-support-for-byte-swapping.patch -- add support for byte swapping(bnc#866709), currently it's at the upstream dev branch
Patch134: libqt5-add-support-for-byte-swapping.patch
# PATCH-FIX-UPSTREAM libqt5-byte-order-byte-is-address0.patch -- the byte order byte is at address 0(bnc#866709), currently it's at the upstream dev branch
Patch135: libqt5-byte-order-byte-is-address0.patch
Patch2: use-freetype-default.patch
# PATCH-FIX-SUSE libqt5-Fix-Gujarati-font.patch bnc#878292 fix broken Gujarati font rendering
Patch136: libqt5-Fix-Gujarati-font.patch
# patches 1000 and above from upstream 5.3 branch #
# PATCH-FIX-UPSTREAM 0001-Do-not-overwrite-existing-event-mask-of-root-window.patch -- QTBUG-39648
Patch1000: 0001-Do-not-overwrite-existing-event-mask-of-root-window.patch
# PATCH-FIX-UPSTREAM 0002-Properly-check-which-OpenGL-features-are-supported.patch -- QTBUG-39730
Patch1001: 0002-Properly-check-which-OpenGL-features-are-supported.patch
# PATCH-FIX-UPSTREAM 0003-Fix-data-race-on-QLoggingCategory-when-using-qDebug-.patch -- Fix data race on QLoggingCategory
Patch1002: 0003-Fix-data-race-on-QLoggingCategory-when-using-qDebug-.patch
# PATCH-FIX-UPSTREAM 0004-QDBus-fix-data-race-on-isDebugging-bool.patch -- fix data race on isDebugging bool
Patch1003: 0004-QDBus-fix-data-race-on-isDebugging-bool.patch
# PATCH-FIX-UPSTREAM 0005-Translate-Super-Hyper-keys-to-MetaModifier.patch -- QTBUG-38428
Patch1004: 0005-Translate-Super-Hyper-keys-to-MetaModifier.patch
Patch3: libqt5-Fix-Gujarati-font.patch
# PATCH-FIX-UPSTREAM protect-geometry-QTBUG-40584.patch -- https://bugreports.qt-project.org/browse/QTBUG-40584
Patch4: protect-geometry-QTBUG-40584.patch
# patches 1000-2000 and above from upstream 5.3 branch #
# patches 2000-3000 and above from upstream 5.4 branch #
# PATCH-FIX-UPSTREAM f1ee10f81ac18789e9a7dc715b464415ba2bc2b8.patch -- prefer QPA implementation in qsystemtrayicon_x11 if available
Patch2000: f1ee10f81ac18789e9a7dc715b464415ba2bc2b8.patch
# PATCH-FIX-UPSTREAM libqt5-add-support-for-byte-swapping.patch -- add support for byte swapping(bnc#866709), currently it's at the upstream dev branch
Patch2001: libqt5-add-support-for-byte-swapping.patch
# PATCH-FIX-UPSTREAM libqt5-byte-order-byte-is-address0.patch -- the byte order byte is at address 0(bnc#866709), currently it's at the upstream dev branch
Patch2002: libqt5-byte-order-byte-is-address0.patch
# PATCH-FIX-UPSTREAM 00010-Replace-the-const-QString-global-static-with-a-QStri.patch
Patch2000: 00010-Replace-the-const-QString-global-static-with-a-QStri.patch
Patch2003: 00010-Replace-the-const-QString-global-static-with-a-QStri.patch
# PATCH-FIX-UPSTREAM 00011-Use-correct-signal-name-when-disconnecting.patch
Patch2001: 00011-Use-correct-signal-name-when-disconnecting.patch
# PATCH-FIX-UPSTREAM libqt5-fix-leak-with-touch-devices-in-xcb.patch -- QTBUG-39596
Patch2002: libqt5-fix-leak-with-touch-devices-in-xcb.patch
# PATCH-FIX-UPSTREAM libqt5-listen-to-touch-events-on-the-master-device.patch -- QTBUG-38625
Patch2003: libqt5-listen-to-touch-events-on-the-master-device.patch
# PATCH-FIX-UPSTREAM libqt5-avoid-crash-during-querying-device.patch -- QTBUG-40820
Patch2004: libqt5-avoid-crash-during-querying-device.patch
Patch2004: 00011-Use-correct-signal-name-when-disconnecting.patch
BuildRequires: alsa-devel
BuildRequires: cups-devel
BuildRequires: fdupes
@ -152,23 +135,12 @@ handling.
%define libqt5_translationdir %{libqt5_datadir}/translations
%prep
%if %qt5_snapshot
%setup -q -n qtbase-%{real_version}
%else
%setup -q -n qtbase-opensource-src-%{real_version}
%endif
%patch109 -p1
%patch131 -p1
%patch132 -p1
%patch133 -p1
%patch134 -p1
%patch135 -p1
%patch136 -p1
%patch1000 -p1
%patch1001 -p1
%patch1002 -p1
%patch1003 -p1
%patch1004 -p1
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch2000 -p1
%patch2001 -p1
%patch2002 -p1

View File

@ -0,0 +1,18 @@
diff --git a/src/widgets/kernel/qwidgetwindow.cpp b/src/widgets/kernel/qwidgetwindow.cpp
index 35a526e..d417e41 100644
--- a/src/widgets/kernel/qwidgetwindow.cpp
+++ b/src/widgets/kernel/qwidgetwindow.cpp
@@ -551,6 +551,13 @@ void QWidgetWindow::updateGeometry()
const QMargins margins = frameMargins();
+ if (geometry().x() != m_widget->data->crect.x() ||
+ geometry().y() != m_widget->data->crect.y())
+ m_widget->setAttribute(Qt::WA_Moved);
+ if (geometry().width() != m_widget->data->crect.width() ||
+ geometry().height() != m_widget->data->crect.height())
+ m_widget->setAttribute(Qt::WA_Resized);
+
m_widget->data->crect = geometry();
QTLWExtra *te = m_widget->d_func()->topData();
te->posIncludesFrame= false;

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:7b5a138d30d7c0228a51084407d5210f6d1acfbee2f95b87f189872cfcd3a569
size 46679724

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:145d325c0f923a7cf9389c4704567d74338b7f7e5df54a19ce44376936771ee6
size 48158068