Merge remote-tracking branch 'up/master' into master-riscv64
Signed-off-by: David Abdurachmanov <david.abdurachmanov@sifive.com>
This commit is contained in:
commit
43539d20dc
|
@ -1,3 +1,5 @@
|
|||
/qtbase-everywhere-src-5.12.1.tar.xz
|
||||
/qtbase-everywhere-src-5.12.3.tar.xz
|
||||
/qtbase-everywhere-src-5.12.4.tar.xz
|
||||
/qtbase-everywhere-src-5.12.5.tar.xz
|
||||
/qtbase-everywhere-src-5.13.2.tar.xz
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
From 2e02b383e03c30f53ff613e431e8fe1d063d5502 Mon Sep 17 00:00:00 2001
|
||||
From: Olivier Goffart <ogoffart@woboq.com>
|
||||
Date: Fri, 8 Nov 2019 11:30:40 +0100
|
||||
Subject: [PATCH] Do not load plugin from the $PWD
|
||||
|
||||
I see no reason why this would make sense to look for plugins in the current
|
||||
directory. And when there are plugins there, it may actually be wrong
|
||||
|
||||
Change-Id: I5f5aa168021fedddafce90effde0d5762cd0c4c5
|
||||
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
|
||||
(cherry picked from commit bf131e8d2181b3404f5293546ed390999f760404)
|
||||
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
|
||||
(cherry picked from commit 52b739776daecf80a8276b49c9e4337e018d8e8b)
|
||||
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
|
||||
---
|
||||
src/corelib/plugin/qpluginloader.cpp | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
diff --git a/src/corelib/plugin/qpluginloader.cpp b/src/corelib/plugin/qpluginloader.cpp
|
||||
index aab00cc7eb..15b8654391 100644
|
||||
--- a/src/corelib/plugin/qpluginloader.cpp
|
||||
+++ b/src/corelib/plugin/qpluginloader.cpp
|
||||
@@ -304,7 +304,6 @@ static QString locatePlugin(const QString& fileName)
|
||||
paths.append(fileName.left(slash)); // don't include the '/'
|
||||
} else {
|
||||
paths = QCoreApplication::libraryPaths();
|
||||
- paths.prepend(QStringLiteral(".")); // search in current dir first
|
||||
}
|
||||
|
||||
for (const QString &path : qAsConst(paths)) {
|
||||
--
|
||||
2.24.1
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
diff -up qtbase-everywhere-src-5.13.2/src/corelib/plugin/qlibrary_unix.cpp.QLibrary-Unix-do-not-attempt-to-load-a-library-relat qtbase-everywhere-src-5.13.2/src/corelib/plugin/qlibrary_unix.cpp
|
||||
--- qtbase-everywhere-src-5.13.2/src/corelib/plugin/qlibrary_unix.cpp.QLibrary-Unix-do-not-attempt-to-load-a-library-relat 2019-10-25 09:16:48.000000000 +0200
|
||||
+++ qtbase-everywhere-src-5.13.2/src/corelib/plugin/qlibrary_unix.cpp 2020-01-20 10:49:23.619299927 +0100
|
||||
@@ -1,7 +1,7 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2016 The Qt Company Ltd.
|
||||
-** Copyright (C) 2018 Intel Corporation
|
||||
+** Copyright (C) 2020 Intel Corporation
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the QtCore module of the Qt Toolkit.
|
||||
@@ -208,6 +208,8 @@ bool QLibraryPrivate::load_sys()
|
||||
for(int suffix = 0; retry && !pHnd && suffix < suffixes.size(); suffix++) {
|
||||
if (!prefixes.at(prefix).isEmpty() && name.startsWith(prefixes.at(prefix)))
|
||||
continue;
|
||||
+ if (path.isEmpty() && prefixes.at(prefix).contains(QLatin1Char('/')))
|
||||
+ continue;
|
||||
if (!suffixes.at(suffix).isEmpty() && name.endsWith(suffixes.at(suffix)))
|
||||
continue;
|
||||
if (loadHints & QLibrary::LoadArchiveMemberHint) {
|
|
@ -0,0 +1,98 @@
|
|||
From 14b61d48e8bad6223a08843cf363ef48f09c479b Mon Sep 17 00:00:00 2001
|
||||
From: Christian Ehrlicher <ch.ehrlicher@gmx.de>
|
||||
Date: Fri, 11 Oct 2019 20:53:49 +0200
|
||||
Subject: QPSQL: Add support for PostgreSQL 12
|
||||
|
||||
Add proper version check and replace long deprecated and now removed
|
||||
access to pg_attrdef.adsrc.
|
||||
|
||||
[ChangeLog][QtSql][QPSQL] added support for PostgreSQL 12
|
||||
|
||||
Fixes: QTBUG-79033
|
||||
Fixes: QTBUG-79064
|
||||
Change-Id: Iec1b13945c34ea017139ad1c5539ab5b7f1e03aa
|
||||
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
|
||||
---
|
||||
src/plugins/sqldrivers/psql/qsql_psql.cpp | 43 +++++++++++++++++--------------
|
||||
src/plugins/sqldrivers/psql/qsql_psql_p.h | 1 +
|
||||
2 files changed, 25 insertions(+), 19 deletions(-)
|
||||
|
||||
diff --git a/src/plugins/sqldrivers/psql/qsql_psql.cpp b/src/plugins/sqldrivers/psql/qsql_psql.cpp
|
||||
index 3803f05b9f..760685f64b 100644
|
||||
--- a/src/plugins/sqldrivers/psql/qsql_psql.cpp
|
||||
+++ b/src/plugins/sqldrivers/psql/qsql_psql.cpp
|
||||
@@ -1078,8 +1078,10 @@ static QPSQLDriver::Protocol qMakePSQLVersion(int vMaj, int vMin)
|
||||
return QPSQLDriver::Version10;
|
||||
case 11:
|
||||
return QPSQLDriver::Version11;
|
||||
+ case 12:
|
||||
+ return QPSQLDriver::Version12;
|
||||
default:
|
||||
- if (vMaj > 11)
|
||||
+ if (vMaj > 12)
|
||||
return QPSQLDriver::UnknownLaterVersion;
|
||||
break;
|
||||
}
|
||||
@@ -1439,26 +1441,29 @@ QSqlRecord QPSQLDriver::record(const QString &tablename) const
|
||||
schema = stripDelimiters(schema, QSqlDriver::TableName);
|
||||
tbl = stripDelimiters(tbl, QSqlDriver::TableName);
|
||||
|
||||
- QString stmt = QStringLiteral("SELECT pg_attribute.attname, pg_attribute.atttypid::int, "
|
||||
- "pg_attribute.attnotnull, pg_attribute.attlen, pg_attribute.atttypmod, "
|
||||
- "pg_attrdef.adsrc "
|
||||
- "FROM pg_class, pg_attribute "
|
||||
- "LEFT JOIN pg_attrdef ON (pg_attrdef.adrelid = "
|
||||
- "pg_attribute.attrelid AND pg_attrdef.adnum = pg_attribute.attnum) "
|
||||
- "WHERE %1 "
|
||||
- "AND pg_class.relname = '%2' "
|
||||
- "AND pg_attribute.attnum > 0 "
|
||||
- "AND pg_attribute.attrelid = pg_class.oid "
|
||||
- "AND pg_attribute.attisdropped = false "
|
||||
- "ORDER BY pg_attribute.attnum");
|
||||
- if (schema.isEmpty())
|
||||
- stmt = stmt.arg(QStringLiteral("pg_table_is_visible(pg_class.oid)"));
|
||||
- else
|
||||
- stmt = stmt.arg(QStringLiteral("pg_class.relnamespace = (SELECT oid FROM "
|
||||
- "pg_namespace WHERE pg_namespace.nspname = '%1')").arg(schema));
|
||||
+ const QString adsrc = protocol() < Version8
|
||||
+ ? QStringLiteral("pg_attrdef.adsrc")
|
||||
+ : QStringLiteral("pg_get_expr(pg_attrdef.adbin, pg_attrdef.adrelid)");
|
||||
+ const QString nspname = schema.isEmpty()
|
||||
+ ? QStringLiteral("pg_table_is_visible(pg_class.oid)")
|
||||
+ : QStringLiteral("pg_class.relnamespace = (SELECT oid FROM "
|
||||
+ "pg_namespace WHERE pg_namespace.nspname = '%1')").arg(schema);
|
||||
+ const QString stmt =
|
||||
+ QStringLiteral("SELECT pg_attribute.attname, pg_attribute.atttypid::int, "
|
||||
+ "pg_attribute.attnotnull, pg_attribute.attlen, pg_attribute.atttypmod, "
|
||||
+ "%1 "
|
||||
+ "FROM pg_class, pg_attribute "
|
||||
+ "LEFT JOIN pg_attrdef ON (pg_attrdef.adrelid = "
|
||||
+ "pg_attribute.attrelid AND pg_attrdef.adnum = pg_attribute.attnum) "
|
||||
+ "WHERE %2 "
|
||||
+ "AND pg_class.relname = '%3' "
|
||||
+ "AND pg_attribute.attnum > 0 "
|
||||
+ "AND pg_attribute.attrelid = pg_class.oid "
|
||||
+ "AND pg_attribute.attisdropped = false "
|
||||
+ "ORDER BY pg_attribute.attnum").arg(adsrc, nspname, tbl);
|
||||
|
||||
QSqlQuery query(createResult());
|
||||
- query.exec(stmt.arg(tbl));
|
||||
+ query.exec(stmt);
|
||||
while (query.next()) {
|
||||
int len = query.value(3).toInt();
|
||||
int precision = query.value(4).toInt();
|
||||
diff --git a/src/plugins/sqldrivers/psql/qsql_psql_p.h b/src/plugins/sqldrivers/psql/qsql_psql_p.h
|
||||
index 99e0b5f60f..9ac1fb50d7 100644
|
||||
--- a/src/plugins/sqldrivers/psql/qsql_psql_p.h
|
||||
+++ b/src/plugins/sqldrivers/psql/qsql_psql_p.h
|
||||
@@ -93,6 +93,7 @@ public:
|
||||
Version9_6 = 22,
|
||||
Version10 = 23,
|
||||
Version11 = 24,
|
||||
+ Version12 = 25,
|
||||
UnknownLaterVersion = 100000
|
||||
};
|
||||
|
||||
--
|
||||
cgit v1.2.1
|
||||
|
|
@ -1,40 +0,0 @@
|
|||
From 1eac947ce2c1d63bd04a94939c4f04e9086913c7 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Morten=20Johan=20S=C3=B8rvig?= <morten.sorvig@qt.io>
|
||||
Date: Wed, 22 May 2019 14:01:41 +0200
|
||||
Subject: [PATCH 010/105] Work around crash where a destroyed window becomes
|
||||
focus_window
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Clear QGuiApplication::focus_window (again) in the
|
||||
QWindow destructor.
|
||||
|
||||
Task-number: QTBUG-75326
|
||||
Change-Id: Ief00b6adfb267fcc7e3881fd728e12df07fc1094
|
||||
Reviewed-by: Christian Andersen <csandersen3@gmail.com>
|
||||
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
|
||||
---
|
||||
src/gui/kernel/qwindow.cpp | 6 ++++++
|
||||
1 file changed, 6 insertions(+)
|
||||
|
||||
diff --git a/src/gui/kernel/qwindow.cpp b/src/gui/kernel/qwindow.cpp
|
||||
index bcd8351619..a19df4da0f 100644
|
||||
--- a/src/gui/kernel/qwindow.cpp
|
||||
+++ b/src/gui/kernel/qwindow.cpp
|
||||
@@ -218,6 +218,12 @@ QWindow::~QWindow()
|
||||
QGuiApplicationPrivate::window_list.removeAll(this);
|
||||
if (!QGuiApplicationPrivate::is_app_closing)
|
||||
QGuiApplicationPrivate::instance()->modalWindowList.removeOne(this);
|
||||
+
|
||||
+ // focus_window is normally cleared in destroy(), but the window may in
|
||||
+ // some cases end up becoming the focus window again. Clear it again
|
||||
+ // here as a workaround. See QTBUG-75326.
|
||||
+ if (QGuiApplicationPrivate::focus_window == this)
|
||||
+ QGuiApplicationPrivate::focus_window = 0;
|
||||
}
|
||||
|
||||
void QWindowPrivate::init(QScreen *targetScreen)
|
||||
--
|
||||
2.21.0
|
||||
|
|
@ -1,100 +0,0 @@
|
|||
From 9b6928b7cc6f12638ae625c67ecf437cfc694498 Mon Sep 17 00:00:00 2001
|
||||
From: Val Doroshchuk <valentyn.doroshchuk@qt.io>
|
||||
Date: Fri, 31 May 2019 14:15:53 +0200
|
||||
Subject: [PATCH 054/105] Fix crash when app is going to shutdown but conf
|
||||
manager is requested
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
If the app is finished and going to shutdown,
|
||||
qNetworkConfigurationManagerPrivate() returns nullptr.
|
||||
|
||||
Change-Id: I01915021d8698802b3a1d0dee43203cd3d4aba74
|
||||
Task-number: QTBUG-76090
|
||||
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
|
||||
---
|
||||
src/network/bearer/qnetworkconfigmanager.cpp | 27 ++++++++++----------
|
||||
src/network/bearer/qnetworksession.cpp | 3 ++-
|
||||
src/plugins/bearer/qnetworksession_impl.cpp | 13 +++++-----
|
||||
3 files changed, 23 insertions(+), 20 deletions(-)
|
||||
|
||||
diff --git a/src/network/bearer/qnetworkconfigmanager.cpp b/src/network/bearer/qnetworkconfigmanager.cpp
|
||||
index 81b5e01d6a..cd87c3669c 100644
|
||||
--- a/src/network/bearer/qnetworkconfigmanager.cpp
|
||||
+++ b/src/network/bearer/qnetworkconfigmanager.cpp
|
||||
@@ -233,19 +233,20 @@ QNetworkConfigurationManager::QNetworkConfigurationManager(QObject *parent)
|
||||
: QObject(parent)
|
||||
{
|
||||
QNetworkConfigurationManagerPrivate *priv = qNetworkConfigurationManagerPrivate();
|
||||
-
|
||||
- connect(priv, SIGNAL(configurationAdded(QNetworkConfiguration)),
|
||||
- this, SIGNAL(configurationAdded(QNetworkConfiguration)));
|
||||
- connect(priv, SIGNAL(configurationRemoved(QNetworkConfiguration)),
|
||||
- this, SIGNAL(configurationRemoved(QNetworkConfiguration)));
|
||||
- connect(priv, SIGNAL(configurationChanged(QNetworkConfiguration)),
|
||||
- this, SIGNAL(configurationChanged(QNetworkConfiguration)));
|
||||
- connect(priv, SIGNAL(onlineStateChanged(bool)),
|
||||
- this, SIGNAL(onlineStateChanged(bool)));
|
||||
- connect(priv, SIGNAL(configurationUpdateComplete()),
|
||||
- this, SIGNAL(updateCompleted()));
|
||||
-
|
||||
- priv->enablePolling();
|
||||
+ if (priv) {
|
||||
+ connect(priv, SIGNAL(configurationAdded(QNetworkConfiguration)),
|
||||
+ this, SIGNAL(configurationAdded(QNetworkConfiguration)));
|
||||
+ connect(priv, SIGNAL(configurationRemoved(QNetworkConfiguration)),
|
||||
+ this, SIGNAL(configurationRemoved(QNetworkConfiguration)));
|
||||
+ connect(priv, SIGNAL(configurationChanged(QNetworkConfiguration)),
|
||||
+ this, SIGNAL(configurationChanged(QNetworkConfiguration)));
|
||||
+ connect(priv, SIGNAL(onlineStateChanged(bool)),
|
||||
+ this, SIGNAL(onlineStateChanged(bool)));
|
||||
+ connect(priv, SIGNAL(configurationUpdateComplete()),
|
||||
+ this, SIGNAL(updateCompleted()));
|
||||
+
|
||||
+ priv->enablePolling();
|
||||
+ }
|
||||
}
|
||||
|
||||
/*!
|
||||
diff --git a/src/network/bearer/qnetworksession.cpp b/src/network/bearer/qnetworksession.cpp
|
||||
index 471d322998..1636bcee97 100644
|
||||
--- a/src/network/bearer/qnetworksession.cpp
|
||||
+++ b/src/network/bearer/qnetworksession.cpp
|
||||
@@ -258,7 +258,8 @@ QNetworkSession::QNetworkSession(const QNetworkConfiguration &connectionConfig,
|
||||
|
||||
// invalid configuration
|
||||
if (!connectionConfig.identifier().isEmpty()) {
|
||||
- const auto engines = qNetworkConfigurationManagerPrivate()->engines();
|
||||
+ auto priv = qNetworkConfigurationManagerPrivate();
|
||||
+ const auto engines = priv ? priv->engines() : QList<QBearerEngine *>();
|
||||
for (QBearerEngine *engine : engines) {
|
||||
if (engine->hasIdentifier(connectionConfig.identifier())) {
|
||||
d = engine->createSessionBackend();
|
||||
diff --git a/src/plugins/bearer/qnetworksession_impl.cpp b/src/plugins/bearer/qnetworksession_impl.cpp
|
||||
index 847479047f..903525a204 100644
|
||||
--- a/src/plugins/bearer/qnetworksession_impl.cpp
|
||||
+++ b/src/plugins/bearer/qnetworksession_impl.cpp
|
||||
@@ -56,12 +56,13 @@ QT_BEGIN_NAMESPACE
|
||||
static QBearerEngineImpl *getEngineFromId(const QString &id)
|
||||
{
|
||||
QNetworkConfigurationManagerPrivate *priv = qNetworkConfigurationManagerPrivate();
|
||||
-
|
||||
- const auto engines = priv->engines();
|
||||
- for (QBearerEngine *engine : engines) {
|
||||
- QBearerEngineImpl *engineImpl = qobject_cast<QBearerEngineImpl *>(engine);
|
||||
- if (engineImpl && engineImpl->hasIdentifier(id))
|
||||
- return engineImpl;
|
||||
+ if (priv) {
|
||||
+ const auto engines = priv->engines();
|
||||
+ for (QBearerEngine *engine : engines) {
|
||||
+ QBearerEngineImpl *engineImpl = qobject_cast<QBearerEngineImpl *>(engine);
|
||||
+ if (engineImpl && engineImpl->hasIdentifier(id))
|
||||
+ return engineImpl;
|
||||
+ }
|
||||
}
|
||||
|
||||
return 0;
|
||||
--
|
||||
2.21.0
|
||||
|
|
@ -1,373 +0,0 @@
|
|||
From 7ae2f47214408fb37ccb52d1fa659cc47a63443b Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Morten=20Johan=20S=C3=B8rvig?= <morten.sorvig@qt.io>
|
||||
Date: Tue, 5 Mar 2019 00:17:43 +0100
|
||||
Subject: [PATCH 056/105] QHighDpi: Replace fromNative()/toNative() with
|
||||
scale()
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
We need one scale() function for each type: the scale factor can be
|
||||
inverted by the caller for the fromNative case. Add a generic
|
||||
templated implementation which will handle simple types. Add add
|
||||
specialization functions for compound types that don't have
|
||||
operator*(), as well as for position types (e.g. QPoint) which account
|
||||
for the origin.
|
||||
|
||||
There's no need for fromNativePixels() and toNativePixels() overloads
|
||||
for each type; replace with generic implementations which call
|
||||
scale(). Do the same thing for fromNativeLocalPosition().
|
||||
|
||||
Some user code is calling fromNative()/toNative() directly, so leave a
|
||||
definition of those functions around for now. Also leave a couple of
|
||||
one-off scaling functions which do not fit the pattern.
|
||||
|
||||
Also fix “narrowing conversion scaleFactor to int” warning for the
|
||||
QMargins scale function.
|
||||
|
||||
Change-Id: Ia67accbb670a80dc1747c2e264b97aab75b1251b
|
||||
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
|
||||
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
|
||||
---
|
||||
src/gui/kernel/qhighdpiscaling_p.h | 264 ++++++-----------------------
|
||||
1 file changed, 55 insertions(+), 209 deletions(-)
|
||||
|
||||
diff --git a/src/gui/kernel/qhighdpiscaling_p.h b/src/gui/kernel/qhighdpiscaling_p.h
|
||||
index dfc6abf5ba..525e3fe78e 100644
|
||||
--- a/src/gui/kernel/qhighdpiscaling_p.h
|
||||
+++ b/src/gui/kernel/qhighdpiscaling_p.h
|
||||
@@ -108,208 +108,114 @@ private:
|
||||
|
||||
namespace QHighDpi {
|
||||
|
||||
-inline QPointF fromNative(const QPointF &pos, qreal scaleFactor, const QPointF &origin)
|
||||
+template <typename T>
|
||||
+inline T scale(const T &value, qreal scaleFactor, QPoint origin = QPoint(0, 0))
|
||||
{
|
||||
- return (pos - origin) / scaleFactor + origin;
|
||||
+ Q_UNUSED(origin)
|
||||
+ return value * scaleFactor;
|
||||
}
|
||||
|
||||
-inline QPointF toNative(const QPointF &pos, qreal scaleFactor, const QPointF &origin)
|
||||
+inline QPointF scale(const QPointF &pos, qreal scaleFactor, QPointF origin = QPointF(0, 0))
|
||||
{
|
||||
return (pos - origin) * scaleFactor + origin;
|
||||
}
|
||||
|
||||
-inline QPoint fromNative(const QPoint &pos, qreal scaleFactor, const QPoint &origin)
|
||||
-{
|
||||
- return (pos - origin) / scaleFactor + origin;
|
||||
-}
|
||||
-
|
||||
-inline QPoint toNative(const QPoint &pos, qreal scaleFactor, const QPoint &origin)
|
||||
+inline QPoint scale(const QPoint &pos, qreal scaleFactor, QPoint origin = QPoint(0, 0))
|
||||
{
|
||||
return (pos - origin) * scaleFactor + origin;
|
||||
}
|
||||
|
||||
-inline QPoint fromNative(const QPoint &pos, qreal scaleFactor)
|
||||
-{
|
||||
- return pos / scaleFactor;
|
||||
-}
|
||||
-
|
||||
-inline QPoint toNative(const QPoint &pos, qreal scaleFactor)
|
||||
-{
|
||||
- return pos * scaleFactor;
|
||||
-}
|
||||
-
|
||||
-inline QSize fromNative(const QSize &size, qreal scaleFactor)
|
||||
-{
|
||||
- return size / scaleFactor; // TODO: should we round up?
|
||||
-}
|
||||
-
|
||||
-inline QSize toNative(const QSize &size, qreal scaleFactor)
|
||||
+inline QRect scale(const QRect &rect, qreal scaleFactor, QPoint origin = QPoint(0, 0))
|
||||
{
|
||||
- return size * scaleFactor;
|
||||
-}
|
||||
-
|
||||
-inline QSizeF fromNative(const QSizeF &size, qreal scaleFactor)
|
||||
-{
|
||||
- return size / scaleFactor;
|
||||
-}
|
||||
-
|
||||
-inline QSizeF toNative(const QSizeF &size, qreal scaleFactor)
|
||||
-{
|
||||
- return size * scaleFactor;
|
||||
-}
|
||||
-
|
||||
-inline QRect fromNative(const QRect &rect, qreal scaleFactor, const QPoint &origin)
|
||||
-{
|
||||
- return QRect(fromNative(rect.topLeft(), scaleFactor, origin), fromNative(rect.size(), scaleFactor));
|
||||
-}
|
||||
-
|
||||
-inline QRect toNative(const QRect &rect, qreal scaleFactor, const QPoint &origin)
|
||||
-{
|
||||
- return QRect(toNative(rect.topLeft(), scaleFactor, origin), toNative(rect.size(), scaleFactor));
|
||||
-
|
||||
-}
|
||||
-
|
||||
-inline QRect fromNative(const QRect &rect, const QScreen *screen, const QPoint &screenOrigin)
|
||||
-{
|
||||
- return fromNative(rect, QHighDpiScaling::factor(screen), screenOrigin);
|
||||
-}
|
||||
-
|
||||
-inline QRect fromNativeScreenGeometry(const QRect &nativeScreenGeometry, const QScreen *screen)
|
||||
-{
|
||||
- return QRect(nativeScreenGeometry.topLeft(),
|
||||
- fromNative(nativeScreenGeometry.size(), QHighDpiScaling::factor(screen)));
|
||||
-}
|
||||
-
|
||||
-inline QPoint fromNativeLocalPosition(const QPoint &pos, const QWindow *window)
|
||||
-{
|
||||
- const qreal scaleFactor = QHighDpiScaling::factor(window);
|
||||
- return pos / scaleFactor;
|
||||
-}
|
||||
-
|
||||
-inline QPoint toNativeLocalPosition(const QPoint &pos, const QWindow *window)
|
||||
-{
|
||||
- const qreal scaleFactor = QHighDpiScaling::factor(window);
|
||||
- return pos * scaleFactor;
|
||||
-}
|
||||
-
|
||||
-inline QPointF fromNativeLocalPosition(const QPointF &pos, const QWindow *window)
|
||||
-{
|
||||
- const qreal scaleFactor = QHighDpiScaling::factor(window);
|
||||
- return pos / scaleFactor;
|
||||
-}
|
||||
-
|
||||
-inline QPointF toNativeLocalPosition(const QPointF &pos, const QWindow *window)
|
||||
-{
|
||||
- const qreal scaleFactor = QHighDpiScaling::factor(window);
|
||||
- return pos * scaleFactor;
|
||||
+ return QRect(scale(rect.topLeft(), scaleFactor, origin), scale(rect.size(), scaleFactor));
|
||||
}
|
||||
|
||||
-template <typename C>
|
||||
-inline QRect fromNativePixels(const QRect &pixelRect, const C *context)
|
||||
+inline QRectF scale(const QRectF &rect, qreal scaleFactor, QPoint origin = QPoint(0, 0))
|
||||
{
|
||||
- const qreal scaleFactor = QHighDpiScaling::factor(context);
|
||||
- const QPoint origin = QHighDpiScaling::origin(context);
|
||||
- return QRect(fromNative(pixelRect.topLeft(), scaleFactor, origin),
|
||||
- fromNative(pixelRect.size(), scaleFactor));
|
||||
+ return QRectF(scale(rect.topLeft(), scaleFactor, origin), scale(rect.size(), scaleFactor));
|
||||
}
|
||||
|
||||
-template <typename C>
|
||||
-inline QRect toNativePixels(const QRect &pointRect, const C *context)
|
||||
+inline QMargins scale(const QMargins &margins, qreal scaleFactor, QPoint origin = QPoint(0, 0))
|
||||
{
|
||||
- const qreal scaleFactor = QHighDpiScaling::factor(context);
|
||||
- const QPoint origin = QHighDpiScaling::origin(context);
|
||||
- return QRect(toNative(pointRect.topLeft(), scaleFactor, origin),
|
||||
- toNative(pointRect.size(), scaleFactor));
|
||||
+ Q_UNUSED(origin)
|
||||
+ return QMargins(qRound(qreal(margins.left()) * scaleFactor), qRound(qreal(margins.top()) * scaleFactor),
|
||||
+ qRound(qreal(margins.right()) * scaleFactor), qRound(qreal(margins.bottom()) * scaleFactor));
|
||||
}
|
||||
|
||||
-template <typename C>
|
||||
-inline QRectF toNativePixels(const QRectF &pointRect, const C *context)
|
||||
+template <typename T>
|
||||
+QVector<T> scale(const QVector<T> &vector, qreal scaleFactor, QPoint origin = QPoint(0, 0))
|
||||
{
|
||||
- const qreal scaleFactor = QHighDpiScaling::factor(context);
|
||||
- const QPoint origin = QHighDpiScaling::origin(context);
|
||||
- return QRectF(toNative(pointRect.topLeft(), scaleFactor, origin),
|
||||
- toNative(pointRect.size(), scaleFactor));
|
||||
-}
|
||||
+ if (!QHighDpiScaling::isActive())
|
||||
+ return vector;
|
||||
|
||||
-template <typename C>
|
||||
-inline QRectF fromNativePixels(const QRectF &pixelRect, const C *context)
|
||||
-{
|
||||
- const qreal scaleFactor = QHighDpiScaling::factor(context);
|
||||
- const QPoint origin = QHighDpiScaling::origin(context);
|
||||
- return QRectF(fromNative(pixelRect.topLeft(), scaleFactor, origin),
|
||||
- fromNative(pixelRect.size(), scaleFactor));
|
||||
+ QVector<T> scaled;
|
||||
+ scaled.reserve(vector.size());
|
||||
+ for (const T &item : vector)
|
||||
+ scaled.append(scale(item, scaleFactor, origin));
|
||||
+ return scaled;
|
||||
}
|
||||
|
||||
-inline QSize fromNativePixels(const QSize &pixelSize, const QWindow *window)
|
||||
+inline QRegion scale(const QRegion ®ion, qreal scaleFactor, QPoint origin = QPoint(0, 0))
|
||||
{
|
||||
- return pixelSize / QHighDpiScaling::factor(window);
|
||||
-}
|
||||
+ if (!QHighDpiScaling::isActive())
|
||||
+ return region;
|
||||
|
||||
-inline QSize toNativePixels(const QSize &pointSize, const QWindow *window)
|
||||
-{
|
||||
- return pointSize * QHighDpiScaling::factor(window);
|
||||
+ QRegion scaled;
|
||||
+ for (const QRect &rect : region)
|
||||
+ scaled += scale(rect, scaleFactor, origin);
|
||||
+ return scaled;
|
||||
}
|
||||
|
||||
-inline QSizeF fromNativePixels(const QSizeF &pixelSize, const QWindow *window)
|
||||
+template <typename T, typename C>
|
||||
+T fromNativePixels(const T &value, const C *context)
|
||||
{
|
||||
- return pixelSize / QHighDpiScaling::factor(window);
|
||||
+ return scale(value, qreal(1) / QHighDpiScaling::factor(context), QHighDpiScaling::origin(context));
|
||||
}
|
||||
|
||||
-inline QSizeF toNativePixels(const QSizeF &pointSize, const QWindow *window)
|
||||
+template <typename T, typename C>
|
||||
+T toNativePixels(const T &value, const C *context)
|
||||
{
|
||||
- return pointSize * QHighDpiScaling::factor(window);
|
||||
+ return scale(value, QHighDpiScaling::factor(context), QHighDpiScaling::origin(context));
|
||||
}
|
||||
|
||||
-template <typename C>
|
||||
-inline QPoint fromNativePixels(const QPoint &pixelPoint, const C *context)
|
||||
+template <typename T, typename C>
|
||||
+T fromNativeLocalPosition(const T &value, const C *context)
|
||||
{
|
||||
- return fromNative(pixelPoint, QHighDpiScaling::factor(context), QHighDpiScaling::origin(context));
|
||||
+ return scale(value, qreal(1) / QHighDpiScaling::factor(context));
|
||||
}
|
||||
|
||||
-template <typename C>
|
||||
-inline QPoint toNativePixels(const QPoint &pointPoint, const C *context)
|
||||
+template <typename T, typename C>
|
||||
+T toNativeLocalPosition(const T &value, const C *context)
|
||||
{
|
||||
- return toNative(pointPoint, QHighDpiScaling::factor(context), QHighDpiScaling::origin(context));
|
||||
+ return scale(value, QHighDpiScaling::factor(context));
|
||||
}
|
||||
|
||||
-template <typename C>
|
||||
-inline QPointF fromNativePixels(const QPointF &pixelPoint, const C *context)
|
||||
+template <typename T>
|
||||
+inline T fromNative(const T &value, qreal scaleFactor, QPoint origin = QPoint(0, 0))
|
||||
{
|
||||
- return fromNative(pixelPoint, QHighDpiScaling::factor(context), QHighDpiScaling::origin(context));
|
||||
+ return scale(value, qreal(1) / scaleFactor, origin);
|
||||
}
|
||||
|
||||
-template <typename C>
|
||||
-inline QPointF toNativePixels(const QPointF &pointPoint, const C *context)
|
||||
+template <typename T>
|
||||
+inline T toNative(const T &value, qreal scaleFactor, QPoint origin = QPoint(0, 0))
|
||||
{
|
||||
- return toNative(pointPoint, QHighDpiScaling::factor(context), QHighDpiScaling::origin(context));
|
||||
+ return scale(value, scaleFactor, origin);
|
||||
}
|
||||
|
||||
-inline QMargins fromNativePixels(const QMargins &pixelMargins, const QWindow *window)
|
||||
+inline QRect fromNative(const QRect &rect, const QScreen *screen, const QPoint &screenOrigin)
|
||||
{
|
||||
- const qreal scaleFactor = QHighDpiScaling::factor(window);
|
||||
- return QMargins(pixelMargins.left() / scaleFactor, pixelMargins.top() / scaleFactor,
|
||||
- pixelMargins.right() / scaleFactor, pixelMargins.bottom() / scaleFactor);
|
||||
+ return scale(rect, qreal(1) / QHighDpiScaling::factor(screen), screenOrigin);
|
||||
}
|
||||
|
||||
-inline QMargins toNativePixels(const QMargins &pointMargins, const QWindow *window)
|
||||
+inline QRect fromNativeScreenGeometry(const QRect &nativeScreenGeometry, const QScreen *screen)
|
||||
{
|
||||
- const qreal scaleFactor = QHighDpiScaling::factor(window);
|
||||
- return QMargins(pointMargins.left() * scaleFactor, pointMargins.top() * scaleFactor,
|
||||
- pointMargins.right() * scaleFactor, pointMargins.bottom() * scaleFactor);
|
||||
+ return QRect(nativeScreenGeometry.topLeft(),
|
||||
+ scale(nativeScreenGeometry.size(), qreal(1) / QHighDpiScaling::factor(screen)));
|
||||
}
|
||||
|
||||
inline QRegion fromNativeLocalRegion(const QRegion &pixelRegion, const QWindow *window)
|
||||
{
|
||||
- if (!QHighDpiScaling::isActive())
|
||||
- return pixelRegion;
|
||||
-
|
||||
- qreal scaleFactor = QHighDpiScaling::factor(window);
|
||||
- QRegion pointRegion;
|
||||
- for (const QRect &rect : pixelRegion) {
|
||||
- pointRegion += QRect(fromNative(rect.topLeft(), scaleFactor),
|
||||
- fromNative(rect.size(), scaleFactor));
|
||||
- }
|
||||
- return pointRegion;
|
||||
+ return scale(pixelRegion, qreal(1) / QHighDpiScaling::factor(window));
|
||||
}
|
||||
|
||||
// When mapping expose events to Qt rects: round top/left towards the origin and
|
||||
@@ -333,67 +239,7 @@ inline QRegion fromNativeLocalExposedRegion(const QRegion &pixelRegion, const QW
|
||||
|
||||
inline QRegion toNativeLocalRegion(const QRegion &pointRegion, const QWindow *window)
|
||||
{
|
||||
- if (!QHighDpiScaling::isActive())
|
||||
- return pointRegion;
|
||||
-
|
||||
- qreal scaleFactor = QHighDpiScaling::factor(window);
|
||||
- QRegion pixelRegon;
|
||||
- for (const QRect &rect : pointRegion) {
|
||||
- pixelRegon += QRect(toNative(rect.topLeft(), scaleFactor),
|
||||
- toNative(rect.size(), scaleFactor));
|
||||
- }
|
||||
- return pixelRegon;
|
||||
-}
|
||||
-
|
||||
-// Any T that has operator/()
|
||||
-template <typename T, typename C>
|
||||
-T fromNativePixels(const T &pixelValue, const C *context)
|
||||
-{
|
||||
- if (!QHighDpiScaling::isActive())
|
||||
- return pixelValue;
|
||||
-
|
||||
- return pixelValue / QHighDpiScaling::factor(context);
|
||||
-
|
||||
-}
|
||||
-
|
||||
-// Any T that has operator*()
|
||||
-template <typename T, typename C>
|
||||
-T toNativePixels(const T &pointValue, const C *context)
|
||||
-{
|
||||
- if (!QHighDpiScaling::isActive())
|
||||
- return pointValue;
|
||||
-
|
||||
- return pointValue * QHighDpiScaling::factor(context);
|
||||
-}
|
||||
-
|
||||
-// Any QVector<T> where T has operator/()
|
||||
-template <typename T>
|
||||
-QVector<T> fromNativePixels(const QVector<T> &pixelValues, const QWindow *window)
|
||||
-{
|
||||
- if (!QHighDpiScaling::isActive())
|
||||
- return pixelValues;
|
||||
-
|
||||
- QVector<T> pointValues;
|
||||
- pointValues.reserve(pixelValues.size());
|
||||
- const auto factor = QHighDpiScaling::factor(window);
|
||||
- for (const T &pixelValue : pixelValues)
|
||||
- pointValues.append(pixelValue / factor);
|
||||
- return pointValues;
|
||||
-}
|
||||
-
|
||||
-// Any QVector<T> where T has operator*()
|
||||
-template <typename T>
|
||||
-QVector<T> toNativePixels(const QVector<T> &pointValues, const QWindow *window)
|
||||
-{
|
||||
- if (!QHighDpiScaling::isActive())
|
||||
- return pointValues;
|
||||
-
|
||||
- QVector<T> pixelValues;
|
||||
- pixelValues.reserve(pointValues.size());
|
||||
- const auto factor = QHighDpiScaling::factor(window);
|
||||
- for (const T &pointValue : pointValues)
|
||||
- pixelValues.append(pointValue * factor);
|
||||
- return pixelValues;
|
||||
+ return scale(pointRegion, QHighDpiScaling::factor(window));
|
||||
}
|
||||
|
||||
} // namespace QHighDpi
|
||||
--
|
||||
2.21.0
|
||||
|
|
@ -1,33 +0,0 @@
|
|||
From 6d61b10f65cd276e009a02cec563cc469245e1f2 Mon Sep 17 00:00:00 2001
|
||||
From: Friedemann Kleint <Friedemann.Kleint@qt.io>
|
||||
Date: Wed, 19 Jun 2019 08:28:14 +0200
|
||||
Subject: [PATCH 066/105] High DPI: Fix crash in QWindow::mapFromGlobal()
|
||||
|
||||
With Web Engine, QQuickWidget or similar, the code can hit on the offscreen
|
||||
window, when its handle is null. Add a check.
|
||||
|
||||
Amends 3af7b279177f7fb092f0e0fb9ffc8e8d846ed774.
|
||||
|
||||
Fixes: QTBUG-76440
|
||||
Change-Id: I123633d18386efd3dbfb22aad6072e4f0877a62e
|
||||
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
|
||||
---
|
||||
src/gui/kernel/qhighdpiscaling.cpp | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/gui/kernel/qhighdpiscaling.cpp b/src/gui/kernel/qhighdpiscaling.cpp
|
||||
index 4f8e9a3817..93fcb1a216 100644
|
||||
--- a/src/gui/kernel/qhighdpiscaling.cpp
|
||||
+++ b/src/gui/kernel/qhighdpiscaling.cpp
|
||||
@@ -400,7 +400,7 @@ QPoint QHighDpiScaling::mapPositionToGlobal(const QPoint &pos, const QPoint &win
|
||||
QPoint QHighDpiScaling::mapPositionFromGlobal(const QPoint &pos, const QPoint &windowGlobalPosition, const QWindow *window)
|
||||
{
|
||||
QPoint windowPosCandidate = pos - windowGlobalPosition;
|
||||
- if (QGuiApplicationPrivate::screen_list.size() <= 1)
|
||||
+ if (QGuiApplicationPrivate::screen_list.size() <= 1 || window->handle() == nullptr)
|
||||
return windowPosCandidate;
|
||||
|
||||
// Device independent global (screen) space may discontiguous when high-dpi scaling
|
||||
--
|
||||
2.21.0
|
||||
|
|
@ -1,161 +0,0 @@
|
|||
From b6ded193ee64ffe67df6d22e7a23aa1ea9e02ec7 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Morten=20Johan=20S=C3=B8rvig?= <morten.sorvig@qt.io>
|
||||
Date: Tue, 5 Mar 2019 11:14:21 +0100
|
||||
Subject: [PATCH 100/105] QHighDpi::fromNativePixels: use correct screen
|
||||
|
||||
Calls like
|
||||
QHighDpi::fromNativePixels(point, window)
|
||||
|
||||
would return device independent coordinates outside any
|
||||
screen in cases where the window is spanning multiple
|
||||
screens and the native point was not on the main screen.
|
||||
|
||||
Correct this by looking up the correct screen and use
|
||||
its scale factor and origin when scaling coordinates.
|
||||
|
||||
Task-number: QTBUG-73231
|
||||
Change-Id: I01a3a42f42121b8d9f4ced2bb0fb023d6ae6bfe7
|
||||
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
|
||||
---
|
||||
src/gui/kernel/qhighdpiscaling.cpp | 50 +++++++++---------------------
|
||||
src/gui/kernel/qhighdpiscaling_p.h | 37 ++++++++++++++++------
|
||||
2 files changed, 42 insertions(+), 45 deletions(-)
|
||||
|
||||
diff --git a/src/gui/kernel/qhighdpiscaling.cpp b/src/gui/kernel/qhighdpiscaling.cpp
|
||||
index 93fcb1a216..0fea416404 100644
|
||||
--- a/src/gui/kernel/qhighdpiscaling.cpp
|
||||
+++ b/src/gui/kernel/qhighdpiscaling.cpp
|
||||
@@ -452,52 +452,30 @@ QDpi QHighDpiScaling::logicalDpi()
|
||||
return m_logicalDpi;
|
||||
}
|
||||
|
||||
-qreal QHighDpiScaling::factor(const QScreen *screen)
|
||||
+QHighDpiScaling::ScaleAndOrigin QHighDpiScaling::scaleAndOrigin(const QPlatformScreen *platformScreen, QPoint *nativePosition)
|
||||
{
|
||||
- // Fast path for when scaling in Qt is not used at all.
|
||||
if (!m_active)
|
||||
- return qreal(1.0);
|
||||
-
|
||||
- // The effective factor for a given screen is the product of the
|
||||
- // screen and global sub-factors
|
||||
- qreal factor = m_factor;
|
||||
- if (screen)
|
||||
- factor *= screenSubfactor(screen->handle());
|
||||
- return factor;
|
||||
+ return { qreal(1), QPoint() };
|
||||
+ const QPlatformScreen *actualScreen = nativePosition ?
|
||||
+ platformScreen->screenForPosition(*nativePosition) : platformScreen;
|
||||
+ return { m_factor * screenSubfactor(actualScreen), actualScreen->geometry().topLeft() };
|
||||
}
|
||||
|
||||
-qreal QHighDpiScaling::factor(const QPlatformScreen *platformScreen)
|
||||
+QHighDpiScaling::ScaleAndOrigin QHighDpiScaling::scaleAndOrigin(const QScreen *screen, QPoint *nativePosition)
|
||||
{
|
||||
if (!m_active)
|
||||
- return qreal(1.0);
|
||||
-
|
||||
- return m_factor * screenSubfactor(platformScreen);
|
||||
+ return { qreal(1), QPoint() };
|
||||
+ if (!screen)
|
||||
+ return { m_factor, QPoint() }; // the global factor
|
||||
+ return scaleAndOrigin(screen->handle(), nativePosition);
|
||||
}
|
||||
|
||||
-qreal QHighDpiScaling::factor(const QWindow *window)
|
||||
+QHighDpiScaling::ScaleAndOrigin QHighDpiScaling::scaleAndOrigin(const QWindow *window, QPoint *nativePosition)
|
||||
{
|
||||
if (!m_active)
|
||||
- return qreal(1.0);
|
||||
-
|
||||
- return factor(window ? window->screen() : QGuiApplication::primaryScreen());
|
||||
-}
|
||||
-
|
||||
-QPoint QHighDpiScaling::origin(const QScreen *screen)
|
||||
-{
|
||||
- return screen->geometry().topLeft();
|
||||
-}
|
||||
-
|
||||
-QPoint QHighDpiScaling::origin(const QPlatformScreen *platformScreen)
|
||||
-{
|
||||
- return platformScreen->geometry().topLeft();
|
||||
-}
|
||||
-
|
||||
-QPoint QHighDpiScaling::origin(const QWindow *window)
|
||||
-{
|
||||
- if (window && window->isTopLevel() && window->screen())
|
||||
- return window->screen()->geometry().topLeft();
|
||||
-
|
||||
- return QPoint(0, 0);
|
||||
+ return { qreal(1), QPoint() };
|
||||
+ QScreen *screen = window ? window->screen() : QGuiApplication::primaryScreen();
|
||||
+ return scaleAndOrigin(screen, nativePosition);
|
||||
}
|
||||
|
||||
#endif //QT_NO_HIGHDPISCALING
|
||||
diff --git a/src/gui/kernel/qhighdpiscaling_p.h b/src/gui/kernel/qhighdpiscaling_p.h
|
||||
index 525e3fe78e..3410c1d345 100644
|
||||
--- a/src/gui/kernel/qhighdpiscaling_p.h
|
||||
+++ b/src/gui/kernel/qhighdpiscaling_p.h
|
||||
@@ -78,14 +78,23 @@ public:
|
||||
static void setScreenFactor(QScreen *window, qreal factor);
|
||||
|
||||
static bool isActive() { return m_active; }
|
||||
- static qreal factor(const QWindow *window);
|
||||
- static qreal factor(const QScreen *screen);
|
||||
- static qreal factor(const QPlatformScreen *platformScreen);
|
||||
- static QPoint origin(const QScreen *screen);
|
||||
- static QPoint origin(const QPlatformScreen *platformScreen);
|
||||
- static QPoint origin(const QWindow *window);
|
||||
- static QPoint mapPositionToNative(const QPoint &pos, const QPlatformScreen *platformScreen);
|
||||
+
|
||||
+ struct ScaleAndOrigin
|
||||
+ {
|
||||
+ qreal factor;
|
||||
+ QPoint origin;
|
||||
+ };
|
||||
+ static ScaleAndOrigin scaleAndOrigin(const QPlatformScreen *platformScreen, QPoint *nativePosition = nullptr);
|
||||
+ static ScaleAndOrigin scaleAndOrigin(const QScreen *screen, QPoint *nativePosition = nullptr);
|
||||
+ static ScaleAndOrigin scaleAndOrigin(const QWindow *platformScreen, QPoint *nativePosition = nullptr);
|
||||
+
|
||||
+ template<typename C>
|
||||
+ static qreal factor(C *context, QPoint *nativePosition = nullptr) {
|
||||
+ return scaleAndOrigin(context, nativePosition).factor;
|
||||
+ }
|
||||
+
|
||||
static QPoint mapPositionFromNative(const QPoint &pos, const QPlatformScreen *platformScreen);
|
||||
+ static QPoint mapPositionToNative(const QPoint &pos, const QPlatformScreen *platformScreen);
|
||||
static QPoint mapPositionToGlobal(const QPoint &pos, const QPoint &windowGlobalPosition, const QWindow *window);
|
||||
static QPoint mapPositionFromGlobal(const QPoint &pos, const QPoint &windowGlobalPosition, const QWindow *window);
|
||||
static QDpi logicalDpi();
|
||||
@@ -166,16 +175,26 @@ inline QRegion scale(const QRegion ®ion, qreal scaleFactor, QPoint origin = Q
|
||||
return scaled;
|
||||
}
|
||||
|
||||
+template <typename T>
|
||||
+inline QPoint position(T) { return QPoint(); }
|
||||
+inline QPoint position(QPoint point) { return point; }
|
||||
+inline QPoint position(QPointF point) { return point.toPoint(); }
|
||||
+inline QPoint position(QRect rect) { return rect.center(); }
|
||||
+inline QPoint position(QRectF rect) { return rect.center().toPoint(); }
|
||||
+
|
||||
template <typename T, typename C>
|
||||
T fromNativePixels(const T &value, const C *context)
|
||||
{
|
||||
- return scale(value, qreal(1) / QHighDpiScaling::factor(context), QHighDpiScaling::origin(context));
|
||||
+ QPoint nativePosition = position(value);
|
||||
+ QHighDpiScaling::ScaleAndOrigin so = QHighDpiScaling::scaleAndOrigin(context, &nativePosition);
|
||||
+ return scale(value, qreal(1) / so.factor, so.origin);
|
||||
}
|
||||
|
||||
template <typename T, typename C>
|
||||
T toNativePixels(const T &value, const C *context)
|
||||
{
|
||||
- return scale(value, QHighDpiScaling::factor(context), QHighDpiScaling::origin(context));
|
||||
+ QHighDpiScaling::ScaleAndOrigin so = QHighDpiScaling::scaleAndOrigin(context);
|
||||
+ return scale(value, so.factor, so.origin);
|
||||
}
|
||||
|
||||
template <typename T, typename C>
|
||||
--
|
||||
2.21.0
|
||||
|
|
@ -52,8 +52,8 @@ BuildRequires: pkgconfig(libsystemd)
|
|||
|
||||
Name: qt5-qtbase
|
||||
Summary: Qt5 - QtBase components
|
||||
Version: 5.12.4
|
||||
Release: 6.0.riscv64%{?dist}
|
||||
Version: 5.13.2
|
||||
Release: 4.0.riscv64%{?dist}
|
||||
|
||||
# See LGPL_EXCEPTIONS.txt, for exception details
|
||||
License: LGPLv2 with exceptions or GPLv3 with exceptions
|
||||
|
@ -133,16 +133,10 @@ Patch80: qtbase-use-wayland-on-gnome.patch
|
|||
# glibc stat
|
||||
|
||||
## upstream patches
|
||||
# https://bugs.kde.org/show_bug.cgi?id=406180
|
||||
# https://codereview.qt-project.org/c/qt/qtbase/+/264563
|
||||
Patch100: fbf3488.diff
|
||||
Patch110: 0010-Work-around-crash-where-a-destroyed-window-becomes-f.patch
|
||||
Patch154: 0054-Fix-crash-when-app-is-going-to-shutdown-but-conf-man.patch
|
||||
Patch156: 0056-QHighDpi-Replace-fromNative-toNative-with-scale.patch
|
||||
Patch166: 0066-High-DPI-Fix-crash-in-QWindow-mapFromGlobal.patch
|
||||
## omit for now, appears to introduce symbol incompatibilities
|
||||
#Patch200: 0100-QHighDpi-fromNativePixels-use-correct-screen.patch
|
||||
Patch250: qtbase-revert-reset-qwidget-winid-when-backing-window-surface-destroyed.patch
|
||||
Patch100: 0001-Do-not-load-plugin-from-the-PWD.patch
|
||||
Patch101: 0001-QLibrary-Unix-do-not-attempt-to-load-a-library-relat.patch
|
||||
# Add support for PostgreSQL 12
|
||||
Patch102: https://code.qt.io/cgit/qt/qtbase.git/patch/?id=14b61d48#/0001-QPSQL-Add-support-for-PostgreSQL-12.patch
|
||||
|
||||
|
||||
# RISC-V: must use -pthread to link libatomic
|
||||
|
@ -209,7 +203,7 @@ Provides: bundled(libxkbcommon) = 0.4.1
|
|||
BuildRequires: pkgconfig(xkeyboard-config)
|
||||
%if 0%{?fedora} || 0%{?rhel} > 6
|
||||
%global egl 1
|
||||
BuildRequires: pkgconfig(egl)
|
||||
BuildRequires: libEGL-devel
|
||||
BuildRequires: pkgconfig(gbm)
|
||||
## TODO: apparently only needed if building opengl_es2 support, do we actually use it? -- rex
|
||||
## this dep was removed in rawhide with introduction of mesa-19.1
|
||||
|
@ -291,7 +285,7 @@ Summary: Development files for %{name}
|
|||
Requires: %{name}%{?_isa} = %{version}-%{release}
|
||||
Requires: %{name}-gui%{?_isa}
|
||||
%if 0%{?egl}
|
||||
Requires: pkgconfig(egl)
|
||||
Requires: libEGL-devel
|
||||
%endif
|
||||
Requires: pkgconfig(gl)
|
||||
Requires: qt5-rpm-macros
|
||||
|
@ -419,13 +413,9 @@ Qt5 libraries used for drawing widgets and OpenGL items.
|
|||
%endif
|
||||
|
||||
## upstream patches
|
||||
%patch100 -p1
|
||||
%patch110 -p1
|
||||
%patch154 -p1
|
||||
%patch156 -p1
|
||||
%patch166 -p1
|
||||
#patch200 -p1
|
||||
%patch250 -p1
|
||||
%patch100 -p1 -b .Do-not-load-plugin-from-the-PWD.patch
|
||||
%patch101 -p1 -b .QLibrary-Unix-do-not-attempt-to-load-a-library-relat
|
||||
%patch102 -p1 -b .QPSQL-Add-support-for-PostgreSQL-12
|
||||
|
||||
# riscv
|
||||
%ifarch riscv64
|
||||
|
@ -567,7 +557,7 @@ translationdir=%{_qt5_translationdir}
|
|||
|
||||
Name: Qt5
|
||||
Description: Qt5 Configuration
|
||||
Version: %{version}
|
||||
Version: 5.13.2
|
||||
EOF
|
||||
|
||||
# rpm macros
|
||||
|
@ -750,6 +740,7 @@ fi
|
|||
%dir %{_qt5_libdir}/cmake/Qt5Xml/
|
||||
%dir %{_qt5_docdir}/
|
||||
%{_qt5_docdir}/global/
|
||||
%{_qt5_docdir}/config/
|
||||
%{_qt5_importdir}/
|
||||
%{_qt5_translationdir}/
|
||||
%if "%{_qt5_prefix}" != "%{_prefix}"
|
||||
|
@ -799,6 +790,7 @@ fi
|
|||
%{_bindir}/qlalr
|
||||
%{_bindir}/fixqt4headers.pl
|
||||
%{_bindir}/qvkgen
|
||||
%{_bindir}/tracegen
|
||||
%{_qt5_bindir}/moc*
|
||||
%{_qt5_bindir}/qdbuscpp2xml*
|
||||
%{_qt5_bindir}/qdbusxml2cpp*
|
||||
|
@ -828,6 +820,7 @@ fi
|
|||
%{_qt5_headerdir}/QtEglFSDeviceIntegration
|
||||
%{_qt5_headerdir}/QtInputSupport
|
||||
%{_qt5_headerdir}/QtEdidSupport
|
||||
%{_qt5_headerdir}/QtXkbCommonSupport
|
||||
%{_qt5_archdatadir}/mkspecs/
|
||||
%{_qt5_libdir}/libQt5Concurrent.prl
|
||||
%{_qt5_libdir}/libQt5Concurrent.so
|
||||
|
@ -872,6 +865,25 @@ fi
|
|||
%{_qt5_libdir}/cmake/Qt5Widgets/Qt5WidgetsMacros.cmake
|
||||
%{_qt5_libdir}/cmake/Qt5Xml/Qt5XmlConfig*.cmake
|
||||
%{_qt5_libdir}/cmake/Qt5/Qt5ModuleLocation.cmake
|
||||
%{_qt5_libdir}/cmake/Qt5AccessibilitySupport/Qt5AccessibilitySupportConfig*.cmake
|
||||
%{_qt5_libdir}/cmake/Qt5Bootstrap/Qt5BootstrapConfig*.cmake
|
||||
%{_qt5_libdir}/cmake/Qt5DeviceDiscoverySupport/Qt5DeviceDiscoverySupportConfig*.cmake
|
||||
%{_qt5_libdir}/cmake/Qt5EdidSupport/Qt5EdidSupportConfig*.cmake
|
||||
%{_qt5_libdir}/cmake/Qt5EglFSDeviceIntegration/Qt5EglFSDeviceIntegrationConfig*.cmake
|
||||
%{_qt5_libdir}/cmake/Qt5EglFsKmsSupport/Qt5EglFsKmsSupportConfig*.cmake
|
||||
%{_qt5_libdir}/cmake/Qt5EglSupport/Qt5EglSupportConfig*.cmake
|
||||
%{_qt5_libdir}/cmake/Qt5EventDispatcherSupport/Qt5EventDispatcherSupportConfig*.cmake
|
||||
%{_qt5_libdir}/cmake/Qt5FbSupport/Qt5FbSupportConfig*.cmake
|
||||
%{_qt5_libdir}/cmake/Qt5FontDatabaseSupport/Qt5FontDatabaseSupportConfig*.cmake
|
||||
%{_qt5_libdir}/cmake/Qt5GlxSupport/Qt5GlxSupportConfig*.cmake
|
||||
%{_qt5_libdir}/cmake/Qt5InputSupport/Qt5InputSupportConfig*.cmake
|
||||
%{_qt5_libdir}/cmake/Qt5KmsSupport/Qt5KmsSupportConfig*.cmake
|
||||
%{_qt5_libdir}/cmake/Qt5LinuxAccessibilitySupport/Qt5LinuxAccessibilitySupportConfig*.cmake
|
||||
%{_qt5_libdir}/cmake/Qt5PlatformCompositorSupport/Qt5PlatformCompositorSupportConfig*.cmake
|
||||
%{_qt5_libdir}/cmake/Qt5ServiceSupport/Qt5ServiceSupportConfig*.cmake
|
||||
%{_qt5_libdir}/cmake/Qt5ThemeSupport/Qt5ThemeSupportConfig*.cmake
|
||||
%{_qt5_libdir}/cmake/Qt5XcbQpa/Qt5XcbQpaConfig*.cmake
|
||||
%{_qt5_libdir}/cmake/Qt5XkbCommonSupport/Qt5XkbCommonSupportConfig*.cmake
|
||||
%{_qt5_libdir}/pkgconfig/Qt5.pc
|
||||
%{_qt5_libdir}/pkgconfig/Qt5Concurrent.pc
|
||||
%{_qt5_libdir}/pkgconfig/Qt5Core.pc
|
||||
|
@ -888,6 +900,7 @@ fi
|
|||
%{_qt5_libdir}/libQt5EglFsKmsSupport.prl
|
||||
%{_qt5_libdir}/libQt5EglFsKmsSupport.so
|
||||
%endif
|
||||
%{_qt5_libdir}/qt5/bin/tracegen
|
||||
## private-devel globs
|
||||
# keep mkspecs/modules stuff in -devel for now, https://bugzilla.redhat.com/show_bug.cgi?id=1705280
|
||||
%{_qt5_archdatadir}/mkspecs/modules/qt_lib_*_private.pri
|
||||
|
@ -945,6 +958,8 @@ fi
|
|||
%{_qt5_headerdir}/QtKmsSupport
|
||||
%{_qt5_libdir}/libQt5EdidSupport.*a
|
||||
%{_qt5_libdir}/libQt5EdidSupport.prl
|
||||
%{_qt5_libdir}/libQt5XkbCommonSupport.*a
|
||||
%{_qt5_libdir}/libQt5XkbCommonSupport.prl
|
||||
|
||||
%if 0%{?examples}
|
||||
%files examples
|
||||
|
@ -1050,9 +1065,32 @@ fi
|
|||
|
||||
|
||||
%changelog
|
||||
* Tue Aug 13 2019 David Abdurachmanov <david.abdurachmanov@sifive.com> - 5.12.4-6.0.riscv64
|
||||
* Sun Mar 29 2020 David Abdurachmanov <david.abdurachmanov@sifive.com> - 5.13.2-4.0.riscv64
|
||||
- Replace -lpthread with -pthread
|
||||
|
||||
* Sun Mar 22 2020 Robert-André Mauchin <zebob.m@gmail.com> - 5.13.2-4
|
||||
- Upstream patch to add support for PostgreSQL 12 (#1815921)
|
||||
|
||||
* Thu Jan 30 2020 Fedora Release Engineering <releng@fedoraproject.org> - 5.13.2-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
|
||||
|
||||
* Mon Jan 20 2020 Than Ngo <than@redhat.com> - 5.13.2-2
|
||||
- upstream patches fix following issues:
|
||||
Do-not-load-plugin-from-the-PWD
|
||||
QLibrary-Unix-do-not-attempt-to-load-a-library-relat
|
||||
|
||||
* Mon Dec 09 2019 Jan Grulich <jgrulich@redhat.com> - 5.13.2-1
|
||||
- 5.13.2
|
||||
|
||||
* Fri Nov 01 2019 Pete Walter <pwalter@fedoraproject.org> - 5.12.5-2
|
||||
- Rebuild for ICU 65
|
||||
|
||||
* Tue Sep 24 2019 Jan Grulich <jgrulich@redhat.com> - 5.12.5-1
|
||||
- 5.12.5
|
||||
|
||||
* Wed Aug 21 2019 Rex Dieter <rdieter@fedoraproject.org> - 5.12.4-7
|
||||
- s/pkgconfig(egl)/libEGL-devel/
|
||||
|
||||
* Fri Jul 26 2019 Fedora Release Engineering <releng@fedoraproject.org> - 5.12.4-6
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
|
||||
|
||||
|
|
|
@ -1,36 +0,0 @@
|
|||
From deac052a40c93633041da058d5c73c9e91aa76c7 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= <tor.arne.vestbo@qt.io>
|
||||
Date: Fri, 12 Jul 2019 12:28:29 +0200
|
||||
Subject: Revert "Reset QWidget's winId when backing window surface is
|
||||
destroyed"
|
||||
|
||||
This reverts commit a9246c7132a2c8864d3ae6cebd260bb9ee711fcb.
|
||||
|
||||
The QWidget machinery is way to fragile to reset the winId under the
|
||||
feet of QWidget like that. We would potentially need to include all
|
||||
the logic in QWidget::destroy. This also ties into the flow between
|
||||
QtGui and QtWidgets during window closing, which is still unresolved.
|
||||
|
||||
Change-Id: I168048a63c89796398eb5331a80ce3e5c8d9a208
|
||||
Fixes: QTBUG-76588
|
||||
Task-number: QTBUG-69289
|
||||
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
|
||||
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
|
||||
|
||||
diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp
|
||||
index fdb3872903..6f0f39a344 100644
|
||||
--- a/src/widgets/kernel/qwidget.cpp
|
||||
+++ b/src/widgets/kernel/qwidget.cpp
|
||||
@@ -9382,12 +9382,6 @@ bool QWidget::event(QEvent *event)
|
||||
d->renderToTextureReallyDirty = 1;
|
||||
#endif
|
||||
break;
|
||||
- case QEvent::PlatformSurface: {
|
||||
- auto surfaceEvent = static_cast<QPlatformSurfaceEvent*>(event);
|
||||
- if (surfaceEvent->surfaceEventType() == QPlatformSurfaceEvent::SurfaceAboutToBeDestroyed)
|
||||
- d->setWinId(0);
|
||||
- break;
|
||||
- }
|
||||
#ifndef QT_NO_PROPERTIES
|
||||
case QEvent::DynamicPropertyChange: {
|
||||
const QByteArray &propName = static_cast<QDynamicPropertyChangeEvent *>(event)->propertyName();
|
2
sources
2
sources
|
@ -1 +1 @@
|
|||
SHA512 (qtbase-everywhere-src-5.12.4.tar.xz) = 28b029a0d3621477f625d474b8bc38ddcc7173df6adb274b438e290b6c50bd0891e5b62c04b566a281781acee3a353a6a3b0bc88228e996994f92900448d7946
|
||||
SHA512 (qtbase-everywhere-src-5.13.2.tar.xz) = b00ad017cc95876698615fd6e41c6ade366146c1f7057e1925bc1b72918f091aa39aa6bf0ea450fc6cd4d8f9810b228770d981dcb6cbe8ad30abb2c42804a204
|
||||
|
|
Loading…
Reference in New Issue