Accepting request 712125 from KDE:Qt:5.13

- Add patch to restore compatibility with akonadi's PGSQL backend
  (see https://bugs.archlinux.org/task/62997):
  * 0001-Revert-Always-escape-the-table-names-when-creating-t.patch

- Disable libzstd support again, it breaks various existing codebases (QTBUG-76521)

- Update to 5.13.0:
  * New bugfix release
  * No changelog available
  * For more details about Qt 5.13 please see:
  * http://code.qt.io/cgit/qt/qtbase.git/plain/dist/changes-5.13.0/?h=5.13
- Remove patches, now upstream:
  * 0001-Add-quoting-to-deal-with-empty-CMAKE_CXX_STANDARD_LI.patch

- Add patches to improve compatibility with Krita:
  * 0001-Fix-notification-of-QDockWidget-when-it-gets-undocke.patch
  * 0002-Synthesize-Enter-LeaveEvent-for-accepted-QTabletEven.patch
  * 0003-Add-an-ID-for-recognition-of-UGEE-tablets.patch

- Revert yet another commit to fix linker errors:
  * 0001-Revert-qmake-link-qt-libraries-by-full-path.patch

- Enable libzstd support

- Revert some commits in the hope of fixing some broken paths (QTBUG-76255):
  * 0001-Revert-Fix-QMAKE_PRL_INSTALL_REPLACE-for-macOS.patch
  * 0002-Revert-Replace-absolute-Qt-lib-dir-in-.prl-files.patch
  * 0003-Revert-Fix-prl-replacements-if-libdir-is-in-QMAKE_DE.patch

- Add patch to fix some cmake module config files (QTBUG-76244):

OBS-URL: https://build.opensuse.org/request/show/712125
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/libqt5-qtbase?expand=0&rev=97
This commit is contained in:
Dominique Leuenberger 2019-06-28 14:32:03 +00:00 committed by Git OBS Bridge
parent aa53756637
commit e25a4c083c
16 changed files with 1184 additions and 241 deletions

View File

@ -0,0 +1,51 @@
From a69373ff735e1ae3e14b5a05a08e4aebf9216185 Mon Sep 17 00:00:00 2001
From: Dmitry Kazakov <dimula73@gmail.com>
Date: Thu, 6 Dec 2018 16:16:27 +0300
Subject: [PATCH 1/3] Fix notification of QDockWidget when it gets undocked
Before the patch the notification was emitted only when the docker
was attached to the panel or changed a position on it.
It looks like the old behavior was documented in a unittest,
so this patch might actually be a "behavior change".
Change-Id: Id3ffbd2018a8e68844d174328dd1c4ceb7fa01d3
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
---
src/widgets/widgets/qdockwidget.cpp | 2 ++
tests/auto/widgets/widgets/qdockwidget/tst_qdockwidget.cpp | 6 +++++-
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/src/widgets/widgets/qdockwidget.cpp b/src/widgets/widgets/qdockwidget.cpp
index 4041c730b8..f98e0e44db 100644
--- a/src/widgets/widgets/qdockwidget.cpp
+++ b/src/widgets/widgets/qdockwidget.cpp
@@ -1182,6 +1182,8 @@ void QDockWidgetPrivate::setWindowState(bool floating, bool unplug, const QRect
QMainWindowLayout *mwlayout = qt_mainwindow_layout_from_dock(q);
if (mwlayout)
emit q->dockLocationChanged(mwlayout->dockWidgetArea(q));
+ } else {
+ emit q->dockLocationChanged(Qt::NoDockWidgetArea);
}
}
diff --git a/tests/auto/widgets/widgets/qdockwidget/tst_qdockwidget.cpp b/tests/auto/widgets/widgets/qdockwidget/tst_qdockwidget.cpp
index f8ce6a2c0a..625116654d 100644
--- a/tests/auto/widgets/widgets/qdockwidget/tst_qdockwidget.cpp
+++ b/tests/auto/widgets/widgets/qdockwidget/tst_qdockwidget.cpp
@@ -670,7 +670,11 @@ void tst_QDockWidget::dockLocationChanged()
spy.clear();
dw.setFloating(true);
- QTest::qWait(100);
+ QTRY_COMPARE(spy.count(), 1);
+ QCOMPARE(qvariant_cast<Qt::DockWidgetArea>(spy.at(0).at(0)),
+ Qt::NoDockWidgetArea);
+ spy.clear();
+
dw.setFloating(false);
QTRY_COMPARE(spy.count(), 1);
QCOMPARE(qvariant_cast<Qt::DockWidgetArea>(spy.at(0).at(0)),
--
2.21.0

View File

@ -1,122 +0,0 @@
From 1d4523091db7e83e895f5a392bb43b02d0367658 Mon Sep 17 00:00:00 2001
From: Lars Knoll <lars.knoll@qt.io>
Date: Fri, 26 Apr 2019 09:15:52 +0200
Subject: [PATCH] Fix page breaking with large images
Don't go into an infinite loop breaking pages, when an image is about
as large as the page. Correctly take top and bottom margins into account
when calculating whether the image could fit on one page.
Amends change 416b4cf685030114837bd375664fd12047895a62.
Fixes: QTBUG-73730
Change-Id: Id311ddf05510be3b1d131702f4e17025a9861e58
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
---
src/gui/text/qtextdocumentlayout.cpp | 5 +-
.../tst_qtextdocumentlayout.cpp | 60 +++++++++++++++++++
2 files changed, 64 insertions(+), 1 deletion(-)
diff --git a/src/gui/text/qtextdocumentlayout.cpp b/src/gui/text/qtextdocumentlayout.cpp
index 2e1a2b5bff..bed0a2c450 100644
--- a/src/gui/text/qtextdocumentlayout.cpp
+++ b/src/gui/text/qtextdocumentlayout.cpp
@@ -145,6 +145,9 @@ struct QTextLayoutStruct {
inline QFixed absoluteY() const
{ return frameY + y; }
+ inline QFixed contentHeight() const
+ { return pageHeight - pageBottomMargin - pageTopMargin; }
+
inline int currentPage() const
{ return pageHeight == 0 ? 0 : (absoluteY() / pageHeight).truncate(); }
@@ -2701,7 +2704,7 @@ void QTextDocumentLayoutPrivate::layoutBlock(const QTextBlock &bl, int blockPosi
getLineHeightParams(blockFormat, line, scaling, &lineAdjustment, &lineBreakHeight, &lineHeight, &lineBottom);
while (layoutStruct->pageHeight > 0 && layoutStruct->absoluteY() + lineBreakHeight > layoutStruct->pageBottom &&
- layoutStruct->pageHeight >= lineBreakHeight) {
+ layoutStruct->contentHeight() >= lineBreakHeight) {
layoutStruct->newPage();
floatMargins(layoutStruct->y, layoutStruct, &left, &right);
diff --git a/tests/auto/gui/text/qtextdocumentlayout/tst_qtextdocumentlayout.cpp b/tests/auto/gui/text/qtextdocumentlayout/tst_qtextdocumentlayout.cpp
index c79f787547..f66b16b970 100644
--- a/tests/auto/gui/text/qtextdocumentlayout/tst_qtextdocumentlayout.cpp
+++ b/tests/auto/gui/text/qtextdocumentlayout/tst_qtextdocumentlayout.cpp
@@ -59,6 +59,8 @@ private slots:
void imageAtRightAlignedTab();
void blockVisibility();
+ void largeImage();
+
private:
QTextDocument *doc;
};
@@ -347,5 +349,63 @@ void tst_QTextDocumentLayout::blockVisibility()
QCOMPARE(doc->size(), halfSize);
}
+void tst_QTextDocumentLayout::largeImage()
+{
+ auto img = QImage(400, 500, QImage::Format_ARGB32_Premultiplied);
+ img.fill(Qt::black);
+
+ {
+ QTextDocument document;
+
+ document.addResource(QTextDocument::ImageResource,
+ QUrl("data://test.png"), QVariant(img));
+ document.setPageSize({500, 504});
+
+ auto html = "<img src=\"data://test.png\">";
+ document.setHtml(html);
+
+ QCOMPARE(document.pageCount(), 2);
+ }
+
+ {
+ QTextDocument document;
+
+ document.addResource(QTextDocument::ImageResource,
+ QUrl("data://test.png"), QVariant(img));
+ document.setPageSize({500, 508});
+
+ auto html = "<img src=\"data://test.png\">";
+ document.setHtml(html);
+
+ QCOMPARE(document.pageCount(), 1);
+ }
+
+ {
+ QTextDocument document;
+
+ document.addResource(QTextDocument::ImageResource,
+ QUrl("data://test.png"), QVariant(img));
+ document.setPageSize({585, 250});
+
+ auto html = "<img src=\"data://test.png\">";
+ document.setHtml(html);
+
+ QCOMPARE(document.pageCount(), 3);
+ }
+
+ {
+ QTextDocument document;
+
+ document.addResource(QTextDocument::ImageResource,
+ QUrl("data://test.png"), QVariant(img));
+ document.setPageSize({585, 258});
+
+ auto html = "<img src=\"data://test.png\">";
+ document.setHtml(html);
+
+ QCOMPARE(document.pageCount(), 2);
+ }
+}
+
QTEST_MAIN(tst_QTextDocumentLayout)
#include "tst_qtextdocumentlayout.moc"
--
2.21.0

View File

@ -0,0 +1,652 @@
From abc2468e46b1f0263f79615cd8d78c559436e3d4 Mon Sep 17 00:00:00 2001
From: Fabian Vogt <fabian@ritter-vogt.de>
Date: Wed, 26 Jun 2019 14:18:58 +0200
Subject: [PATCH] Revert "Always escape the table names when creating the SQL
statement"
This reverts commit 461ef575bcf778ba24b0be6b775098d4b80ae5e1.
---
src/plugins/sqldrivers/mysql/qsql_mysql.cpp | 2 +-
src/plugins/sqldrivers/psql/qsql_psql.cpp | 24 +++-
.../doc/snippets/code/doc_src_sql-driver.qdoc | 13 ---
src/sql/doc/src/sql-driver.qdoc | 17 ---
src/sql/kernel/qsqldatabase.cpp | 10 --
src/sql/kernel/qsqldriver.cpp | 16 +--
.../sql/kernel/qsqldatabase/tst_databases.h | 14 +--
.../kernel/qsqldatabase/tst_qsqldatabase.cpp | 110 +++++++-----------
.../sql/kernel/qsqlquery/tst_qsqlquery.cpp | 14 ++-
.../tst_qsqlrelationaltablemodel.cpp | 14 ++-
.../qsqltablemodel/tst_qsqltablemodel.cpp | 10 ++
11 files changed, 106 insertions(+), 138 deletions(-)
diff --git a/src/plugins/sqldrivers/mysql/qsql_mysql.cpp b/src/plugins/sqldrivers/mysql/qsql_mysql.cpp
index febbe58506..80c0c9c522 100644
--- a/src/plugins/sqldrivers/mysql/qsql_mysql.cpp
+++ b/src/plugins/sqldrivers/mysql/qsql_mysql.cpp
@@ -1551,7 +1551,7 @@ QSqlIndex QMYSQLDriver::primaryIndex(const QString& tablename) const
QSqlQuery i(createResult());
QString stmt(QLatin1String("show index from %1;"));
QSqlRecord fil = record(tablename);
- i.exec(stmt.arg(escapeIdentifier(tablename, QSqlDriver::TableName)));
+ i.exec(stmt.arg(tablename));
while (i.isActive() && i.next()) {
if (i.value(2).toString() == QLatin1String("PRIMARY")) {
idx.append(fil.field(i.value(4).toString()));
diff --git a/src/plugins/sqldrivers/psql/qsql_psql.cpp b/src/plugins/sqldrivers/psql/qsql_psql.cpp
index c1be91cb22..7abd1f242b 100644
--- a/src/plugins/sqldrivers/psql/qsql_psql.cpp
+++ b/src/plugins/sqldrivers/psql/qsql_psql.cpp
@@ -1396,8 +1396,16 @@ QSqlIndex QPSQLDriver::primaryIndex(const QString &tablename) const
QString tbl = tablename;
QString schema;
qSplitTableName(tbl, schema);
- schema = stripDelimiters(schema, QSqlDriver::TableName);
- tbl = stripDelimiters(tbl, QSqlDriver::TableName);
+
+ if (isIdentifierEscaped(tbl, QSqlDriver::TableName))
+ tbl = stripDelimiters(tbl, QSqlDriver::TableName);
+ else
+ tbl = std::move(tbl).toLower();
+
+ if (isIdentifierEscaped(schema, QSqlDriver::TableName))
+ schema = stripDelimiters(schema, QSqlDriver::TableName);
+ else
+ schema = std::move(schema).toLower();
QString stmt = QStringLiteral("SELECT pg_attribute.attname, pg_attribute.atttypid::int, "
"pg_class.relname "
@@ -1432,8 +1440,16 @@ QSqlRecord QPSQLDriver::record(const QString &tablename) const
QString tbl = tablename;
QString schema;
qSplitTableName(tbl, schema);
- schema = stripDelimiters(schema, QSqlDriver::TableName);
- tbl = stripDelimiters(tbl, QSqlDriver::TableName);
+
+ if (isIdentifierEscaped(tbl, QSqlDriver::TableName))
+ tbl = stripDelimiters(tbl, QSqlDriver::TableName);
+ else
+ tbl = std::move(tbl).toLower();
+
+ if (isIdentifierEscaped(schema, QSqlDriver::TableName))
+ schema = stripDelimiters(schema, QSqlDriver::TableName);
+ else
+ schema = std::move(schema).toLower();
QString stmt = QStringLiteral("SELECT pg_attribute.attname, pg_attribute.atttypid::int, "
"pg_attribute.attnotnull, pg_attribute.attlen, pg_attribute.atttypmod, "
diff --git a/src/sql/doc/snippets/code/doc_src_sql-driver.qdoc b/src/sql/doc/snippets/code/doc_src_sql-driver.qdoc
index 9709deeccb..d127bdf8a5 100644
--- a/src/sql/doc/snippets/code/doc_src_sql-driver.qdoc
+++ b/src/sql/doc/snippets/code/doc_src_sql-driver.qdoc
@@ -237,16 +237,3 @@ Could not create database object
//! [38]
QPSQLDriver::getResult: Query results lost - probably discarded on executing another SQL query.
//! [38]
-
-//! [39]
-CREATE TABLE "testTable" ("id" INTEGER);
-//! [39]
-
-//! [40]
-QString tableString("testTable");
-QSqlQuery q;
-// Create table query is not quoted, therefore it is mapped to lower case
-q.exec(QString("CREATE TABLE %1 (id INTEGER)").arg(tableString));
-// Call toLower() on the string so that it can be matched
-QSqlRecord rec = database.record(tableString.toLower());
-//! [40]
diff --git a/src/sql/doc/src/sql-driver.qdoc b/src/sql/doc/src/sql-driver.qdoc
index cccce48bb3..fd95e89812 100644
--- a/src/sql/doc/src/sql-driver.qdoc
+++ b/src/sql/doc/src/sql-driver.qdoc
@@ -381,23 +381,6 @@
multibyte enabled PostgreSQL server can be found in the PostgreSQL
Administrator Guide, Chapter 5.
- \section3 QPSQL Case Sensitivity
-
- PostgreSQL databases will only respect case sensitivity if the table or field
- name is quoted when the table is created. So for example, a SQL query such
- as:
-
- \snippet code/doc_src_sql-driver.qdoc 39
-
- will ensure that it can be accessed with the same case that was used. If the
- table or field name is not quoted when created, the actual table name
- or field name will be lower-case. When QSqlDatabase::record() or
- QSqlDatabase::primaryIndex() access a table or field that was unquoted
- when created, the name passed to the function must be lower-case to
- ensure it is found. For example:
-
- \snippet code/doc_src_sql-driver.qdoc 40
-
\section3 QPSQL BLOB Support
Binary Large Objects are supported through the \c BYTEA field type in
diff --git a/src/sql/kernel/qsqldatabase.cpp b/src/sql/kernel/qsqldatabase.cpp
index d63a9e59a8..12ab9671b5 100644
--- a/src/sql/kernel/qsqldatabase.cpp
+++ b/src/sql/kernel/qsqldatabase.cpp
@@ -1088,11 +1088,6 @@ QStringList QSqlDatabase::tables(QSql::TableType type) const
Returns the primary index for table \a tablename. If no primary
index exists, an empty QSqlIndex is returned.
- \note Some drivers, such as the \l {QPSQL Case Sensitivity}{QPSQL}
- driver, may may require you to pass \a tablename in lower case if
- the table was not quoted when created. See the
- \l{sql-driver.html}{Qt SQL driver} documentation for more information.
-
\sa tables(), record()
*/
@@ -1107,11 +1102,6 @@ QSqlIndex QSqlDatabase::primaryIndex(const QString& tablename) const
the table (or view) called \a tablename. The order in which the
fields appear in the record is undefined. If no such table (or
view) exists, an empty record is returned.
-
- \note Some drivers, such as the \l {QPSQL Case Sensitivity}{QPSQL}
- driver, may may require you to pass \a tablename in lower case if
- the table was not quoted when created. See the
- \l{sql-driver.html}{Qt SQL driver} documentation for more information.
*/
QSqlRecord QSqlDatabase::record(const QString& tablename) const
diff --git a/src/sql/kernel/qsqldriver.cpp b/src/sql/kernel/qsqldriver.cpp
index 7f7b81b05b..8c6ae382f6 100644
--- a/src/sql/kernel/qsqldriver.cpp
+++ b/src/sql/kernel/qsqldriver.cpp
@@ -488,8 +488,6 @@ QString QSqlDriver::stripDelimiters(const QString &identifier, IdentifierType ty
QString QSqlDriver::sqlStatement(StatementType type, const QString &tableName,
const QSqlRecord &rec, bool preparedStatement) const
{
- const auto tableNameString = tableName.isEmpty() ? QString()
- : prepareIdentifier(tableName, QSqlDriver::TableName, this);
int i;
QString s;
s.reserve(128);
@@ -502,12 +500,13 @@ QString QSqlDriver::sqlStatement(StatementType type, const QString &tableName,
if (s.isEmpty())
return s;
s.chop(2);
- s = QLatin1String("SELECT ") + s + QLatin1String(" FROM ") + tableNameString;
+ s.prepend(QLatin1String("SELECT ")).append(QLatin1String(" FROM ")).append(tableName);
break;
case WhereStatement:
{
- const QString tableNamePrefix = tableNameString.isEmpty()
- ? QString() : tableNameString + QLatin1Char('.');
+ const QString tableNamePrefix = tableName.isEmpty()
+ ? QString()
+ : prepareIdentifier(tableName, QSqlDriver::TableName, this) + QLatin1Char('.');
for (int i = 0; i < rec.count(); ++i) {
if (!rec.isGenerated(i))
continue;
@@ -524,7 +523,8 @@ QString QSqlDriver::sqlStatement(StatementType type, const QString &tableName,
break;
}
case UpdateStatement:
- s = s + QLatin1String("UPDATE ") + tableNameString + QLatin1String(" SET ");
+ s.append(QLatin1String("UPDATE ")).append(tableName).append(
+ QLatin1String(" SET "));
for (i = 0; i < rec.count(); ++i) {
if (!rec.isGenerated(i))
continue;
@@ -541,10 +541,10 @@ QString QSqlDriver::sqlStatement(StatementType type, const QString &tableName,
s.clear();
break;
case DeleteStatement:
- s = s + QLatin1String("DELETE FROM ") + tableNameString;
+ s.append(QLatin1String("DELETE FROM ")).append(tableName);
break;
case InsertStatement: {
- s = s + QLatin1String("INSERT INTO ") + tableNameString + QLatin1String(" (");
+ s.append(QLatin1String("INSERT INTO ")).append(tableName).append(QLatin1String(" ("));
QString vals;
for (i = 0; i < rec.count(); ++i) {
if (!rec.isGenerated(i))
diff --git a/tests/auto/sql/kernel/qsqldatabase/tst_databases.h b/tests/auto/sql/kernel/qsqldatabase/tst_databases.h
index 55875359ff..97397e3159 100644
--- a/tests/auto/sql/kernel/qsqldatabase/tst_databases.h
+++ b/tests/auto/sql/kernel/qsqldatabase/tst_databases.h
@@ -79,14 +79,14 @@ inline QString fixupTableName(const QString &tableName, QSqlDatabase db)
return tbName;
}
-inline static QString qTableName(const QString &prefix, const char *sourceFileName,
- QSqlDatabase db, bool escape = true)
+inline static QString qTableName(const QString& prefix, const char *sourceFileName, QSqlDatabase db)
{
- const auto tableStr = fixupTableName(QString(QLatin1String("dbtst") + db.driverName() +
- QString::number(qHash(QLatin1String(sourceFileName) +
- "_" + qGetHostName().replace("-", "_")), 16) +
- "_" + prefix), db);
- return escape ? db.driver()->escapeIdentifier(tableStr, QSqlDriver::TableName) : tableStr;
+ QString tableStr = QLatin1String("dbtst");
+ if (db.driverName().toLower().contains("ODBC"))
+ tableStr += QLatin1String("_odbc");
+ return fixupTableName(QString(QLatin1String("dbtst") + db.driverName() +
+ QString::number(qHash(QLatin1String(sourceFileName) +
+ "_" + qGetHostName().replace( "-", "_" )), 16) + "_" + prefix), db);
}
inline static QString qTableName(const QString& prefix, QSqlDatabase db)
diff --git a/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp b/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp
index f309231b10..75db31e45f 100644
--- a/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp
+++ b/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp
@@ -314,8 +314,10 @@ void tst_QSqlDatabase::createTestTables(QSqlDatabase db)
" (id integer not null, t_varchar varchar(40) not null, "
"t_char char(40), t_numeric numeric(6, 3), primary key (id, t_varchar))"));
}
+
if (testWhiteSpaceNames(db.driverName())) {
- QString qry = "create table " + qTableName("qtest test", __FILE__, db)
+ QString qry = "create table "
+ + db.driver()->escapeIdentifier(tableName + " test", QSqlDriver::TableName)
+ '('
+ db.driver()->escapeIdentifier(QLatin1String("test test"), QSqlDriver::FieldName)
+ " int not null primary key)";
@@ -339,7 +341,6 @@ void tst_QSqlDatabase::dropTestTables(QSqlDatabase db)
const QString qtestTable = qTableName("qtest", __FILE__, db);
QStringList tableNames;
tableNames << qtestTable
- << qTableName("qtest test", __FILE__, db)
<< qTableName("qtestfields", __FILE__, db)
<< qTableName("qtestalter", __FILE__, db)
<< qTableName("qtest_temp", __FILE__, db)
@@ -512,9 +513,7 @@ void tst_QSqlDatabase::tables()
CHECK_DATABASE(db);
QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
- const auto qtest(qTableName("qtest", __FILE__, db, false)),
- qtest_view(qTableName("qtest_view", __FILE__, db, false)),
- temp_tab(qTableName("test_tab", __FILE__, db, false));
+ const QString qtest(qTableName("qtest", __FILE__, db)), qtest_view(qTableName("qtest_view", __FILE__, db)), temp_tab(qTableName("test_tab", __FILE__, db));
bool views = true;
bool tempTables = false;
@@ -579,10 +578,10 @@ void tst_QSqlDatabase::whitespaceInIdentifiers()
const QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
if (testWhiteSpaceNames(db.driverName())) {
- const auto tableName(qTableName("qtest test", __FILE__, db, false));
+ const QString tableName(qTableName("qtest", __FILE__, db) + " test");
QVERIFY(db.tables().contains(tableName, Qt::CaseInsensitive));
- QSqlRecord rec = db.record(tableName);
+ QSqlRecord rec = db.record(db.driver()->escapeIdentifier(tableName, QSqlDriver::TableName));
QCOMPARE(rec.count(), 1);
QCOMPARE(rec.fieldName(0), QString("test test"));
if (dbType == QSqlDriver::Oracle)
@@ -590,7 +589,7 @@ void tst_QSqlDatabase::whitespaceInIdentifiers()
else
QCOMPARE(rec.field(0).type(), QVariant::Int);
- QSqlIndex idx = db.primaryIndex(tableName);
+ QSqlIndex idx = db.primaryIndex(db.driver()->escapeIdentifier(tableName, QSqlDriver::TableName));
QCOMPARE(idx.count(), 1);
QCOMPARE(idx.fieldName(0), QString("test test"));
if (dbType == QSqlDriver::Oracle)
@@ -608,12 +607,11 @@ void tst_QSqlDatabase::alterTable()
QSqlDatabase db = QSqlDatabase::database(dbName);
CHECK_DATABASE(db);
const QString qtestalter(qTableName("qtestalter", __FILE__, db));
- const auto noEscapeAlterTable = qTableName("qtestalter", __FILE__, db, false);
QSqlQuery q(db);
QVERIFY_SQL(q, exec("create table " + qtestalter + " (F1 char(20), F2 char(20), F3 char(20))"));
- QSqlRecord rec = db.record(noEscapeAlterTable);
+ QSqlRecord rec = db.record(qtestalter);
QCOMPARE((int)rec.count(), 3);
int i;
@@ -625,7 +623,7 @@ void tst_QSqlDatabase::alterTable()
QSKIP("DBMS doesn't support dropping columns in ALTER TABLE statement");
}
- rec = db.record(noEscapeAlterTable);
+ rec = db.record(qtestalter);
QCOMPARE((int)rec.count(), 2);
@@ -683,16 +681,13 @@ void tst_QSqlDatabase::testRecord(const FieldDef fieldDefs[], const QSqlRecord&
void tst_QSqlDatabase::commonFieldTest(const FieldDef fieldDefs[], QSqlDatabase db, const int fieldCount)
{
CHECK_DATABASE(db);
- const QStringList tableNames = { qTableName("qtestfields", __FILE__, db),
- qTableName("qtestfields", __FILE__, db, false) };
- for (const QString table : tableNames) {
- QSqlRecord rec = db.record(table);
- QCOMPARE(rec.count(), fieldCount + 1);
- testRecord(fieldDefs, rec, db);
- }
+ const QString tableName = qTableName("qtestfields", __FILE__, db);
+ QSqlRecord rec = db.record(tableName);
+ QCOMPARE((int)rec.count(), fieldCount+1);
+ testRecord(fieldDefs, rec, db);
+
QSqlQuery q(db);
- // Only check the escaped entry
- QVERIFY_SQL(q, exec("select * from " + tableNames.at(0)));
+ QVERIFY_SQL(q, exec("select * from " + tableName));
}
void tst_QSqlDatabase::recordTDS()
@@ -851,8 +846,12 @@ void tst_QSqlDatabase::recordPSQL()
QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
if (dbType == QSqlDriver::PostgreSQL)
QVERIFY_SQL( q, exec("set client_min_messages='warning'"));
- q.exec("drop sequence " + qTableName("qtestfields_t_bigserial_seq", __FILE__, db));
- q.exec("drop sequence " + qTableName("qtestfields_t_serial_seq", __FILE__, db));
+ const QString tableName = qTableName("qtestfields", __FILE__, db);
+ q.exec("drop sequence " + tableName + "_t_bigserial_seq");
+ q.exec("drop sequence " + tableName + "_t_serial_seq");
+ // older psql cut off the table name
+ q.exec("drop sequence " + tableName + "_t_bigserial_seq");
+ q.exec("drop sequence " + tableName + "_t_serial_seq");
const int fieldCount = createFieldTable(fieldDefs, db);
QVERIFY(fieldCount > 0);
@@ -1206,40 +1205,27 @@ void tst_QSqlDatabase::caseSensivity()
const QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
bool cs = false;
- if (dbType == QSqlDriver::MySqlServer || dbType == QSqlDriver::SQLite
- || dbType == QSqlDriver::Sybase || dbType == QSqlDriver::PostgreSQL
+ if (dbType == QSqlDriver::MySqlServer || dbType == QSqlDriver::SQLite || dbType == QSqlDriver::Sybase
|| dbType == QSqlDriver::MSSqlServer || db.driverName().startsWith("QODBC"))
cs = true;
- QSqlRecord rec = db.record(qTableName("qtest", __FILE__, db, false));
+ QSqlRecord rec = db.record(qTableName("qtest", __FILE__, db));
QVERIFY((int)rec.count() > 0);
if (!cs) {
- rec = db.record(qTableName("QTEST", __FILE__, db, false).toUpper());
+ rec = db.record(qTableName("QTEST", __FILE__, db).toUpper());
QVERIFY((int)rec.count() > 0);
- rec = db.record(qTableName("qTesT", __FILE__, db, false));
+ rec = db.record(qTableName("qTesT", __FILE__, db));
QVERIFY((int)rec.count() > 0);
}
- rec = db.primaryIndex(qTableName("qtest", __FILE__, db, false));
+ rec = db.primaryIndex(qTableName("qtest", __FILE__, db));
QVERIFY((int)rec.count() > 0);
if (!cs) {
- rec = db.primaryIndex(qTableName("QTEST", __FILE__, db, false).toUpper());
+ rec = db.primaryIndex(qTableName("QTEST", __FILE__, db).toUpper());
QVERIFY((int)rec.count() > 0);
- rec = db.primaryIndex(qTableName("qTesT", __FILE__, db, false));
+ rec = db.primaryIndex(qTableName("qTesT", __FILE__, db));
QVERIFY((int)rec.count() > 0);
}
-
- // Explicit test for case sensitive table creation without quoting
- QSqlQuery qry(db);
- const auto noQuotesTable = qTableName("NoQuotes", __FILE__, db, false);
- tst_Databases::safeDropTable(db, noQuotesTable);
- QVERIFY_SQL(qry, exec("CREATE TABLE " + noQuotesTable + " (id INTEGER)"));
- QVERIFY_SQL(qry, exec("INSERT INTO " + noQuotesTable + " VALUES(1)"));
- QVERIFY_SQL(qry, exec("SELECT * FROM " + noQuotesTable));
- QVERIFY_SQL(qry, next());
- QCOMPARE(qry.value(0).toInt(), 1);
- rec = db.record(cs ? noQuotesTable.toLower() : noQuotesTable);
- QVERIFY(rec.count() > 0);
}
void tst_QSqlDatabase::noEscapedFieldNamesInRecord()
@@ -1274,19 +1260,17 @@ void tst_QSqlDatabase::psql_schemas()
const QString schemaName = qTableName("qtestschema", __FILE__, db);
QVERIFY_SQL(q, exec("CREATE SCHEMA " + schemaName));
- const auto table = schemaName + '.' + qTableName("qtesttable", __FILE__, db);
- const auto noescapeTable = qTableName("qtestschema", __FILE__, db, false) + '.' +
- qTableName("qtesttable", __FILE__, db, false);
+ QString table = schemaName + '.' + qTableName("qtesttable", __FILE__, db);
QVERIFY_SQL(q, exec("CREATE TABLE " + table + " (id int primary key, name varchar(20))"));
- QVERIFY(db.tables().contains(noescapeTable, Qt::CaseInsensitive));
+ QVERIFY(db.tables().contains(table, Qt::CaseInsensitive));
- QSqlRecord rec = db.record(noescapeTable);
+ QSqlRecord rec = db.record(table);
QCOMPARE(rec.count(), 2);
QCOMPARE(rec.fieldName(0), QString("id"));
QCOMPARE(rec.fieldName(1), QString("name"));
- QSqlIndex idx = db.primaryIndex(noescapeTable);
+ QSqlIndex idx = db.primaryIndex(table);
QCOMPARE(idx.count(), 1);
QCOMPARE(idx.fieldName(0), QString("id"));
}
@@ -1304,21 +1288,18 @@ void tst_QSqlDatabase::psql_escapedIdentifiers()
QSqlQuery q(db);
QVERIFY_SQL( q, exec("set client_min_messages='warning'"));
- const char bumpyCase[] = "qtestScHeMa";
- const QString schemaName(qTableName(bumpyCase, __FILE__, db)),
+ const QString schemaName(qTableName("qtestScHeMa", __FILE__, db)),
tableName(qTableName("qtest", __FILE__, db)),
field1Name(QLatin1String("fIeLdNaMe")),
field2Name(QLatin1String("ZuLu"));
- q.exec(QString("DROP SCHEMA %1 CASCADE").arg(schemaName));
- const auto createSchema = QString("CREATE SCHEMA %1").arg(schemaName);
+ q.exec(QString("DROP SCHEMA \"%1\" CASCADE").arg(schemaName));
+ QString createSchema = QString("CREATE SCHEMA \"%1\"").arg(schemaName);
QVERIFY_SQL(q, exec(createSchema));
- const auto createTable = QString("CREATE TABLE %1.%2 (\"%3\" int PRIMARY KEY, \"%4\" varchar(20))")
- .arg(schemaName, tableName, field1Name, field2Name);
+ QString createTable = QString("CREATE TABLE \"%1\".\"%2\" (\"%3\" int PRIMARY KEY, \"%4\" varchar(20))").arg(schemaName).arg(tableName).arg(field1Name).arg(field2Name);
QVERIFY_SQL(q, exec(createTable));
- QVERIFY(db.tables().contains(qTableName(bumpyCase, __FILE__, db, false) + '.' +
- qTableName("qtest", __FILE__, db, false), Qt::CaseSensitive));
+ QVERIFY(db.tables().contains(schemaName + '.' + tableName, Qt::CaseSensitive));
QSqlField fld1(field1Name, QVariant::Int);
QSqlField fld2(field2Name, QVariant::String);
@@ -1326,9 +1307,7 @@ void tst_QSqlDatabase::psql_escapedIdentifiers()
rec.append(fld1);
rec.append(fld2);
- QVERIFY_SQL(q, exec(drv->sqlStatement(QSqlDriver::SelectStatement,
- schemaName + '.' + tableName,
- rec, false)));
+ QVERIFY_SQL(q, exec(drv->sqlStatement(QSqlDriver::SelectStatement, db.driver()->escapeIdentifier(schemaName, QSqlDriver::TableName) + '.' + db.driver()->escapeIdentifier(tableName, QSqlDriver::TableName), rec, false)));
rec = q.record();
QCOMPARE(rec.count(), 2);
@@ -1336,7 +1315,7 @@ void tst_QSqlDatabase::psql_escapedIdentifiers()
QCOMPARE(rec.fieldName(1), field2Name);
QCOMPARE(rec.field(0).type(), QVariant::Int);
- q.exec(QString("DROP SCHEMA %1 CASCADE").arg(schemaName));
+ q.exec(QString("DROP SCHEMA \"%1\" CASCADE").arg(schemaName));
}
void tst_QSqlDatabase::psql_escapeBytea()
@@ -2167,7 +2146,7 @@ void tst_QSqlDatabase::eventNotificationPSQL()
CHECK_DATABASE(db);
QSqlQuery query(db);
- const auto procedureName = qTableName("posteventProc", __FILE__, db, false);
+ QString procedureName = qTableName("posteventProc", __FILE__, db);
QString payload = "payload";
QSqlDriver &driver=*(db.driver());
QVERIFY_SQL(driver, subscribeToNotification(procedureName));
@@ -2191,22 +2170,21 @@ void tst_QSqlDatabase::eventNotificationSQLite()
QSKIP("QSQLITE specific test");
}
const QString tableName(qTableName("sqlitnotifytest", __FILE__, db));
- const auto noEscapeTableName(qTableName("sqlitnotifytest", __FILE__, db, false));
tst_Databases::safeDropTable(db, tableName);
QSignalSpy notificationSpy(db.driver(), SIGNAL(notification(QString)));
QSignalSpy notificationSpyExt(db.driver(), SIGNAL(notification(QString,QSqlDriver::NotificationSource,QVariant)));
QSqlQuery q(db);
QVERIFY_SQL(q, exec("CREATE TABLE " + tableName + " (id INTEGER, realVal REAL)"));
- db.driver()->subscribeToNotification(noEscapeTableName);
+ db.driver()->subscribeToNotification(tableName);
QVERIFY_SQL(q, exec("INSERT INTO " + tableName + " (id, realVal) VALUES (1, 2.3)"));
QTRY_COMPARE(notificationSpy.count(), 1);
QTRY_COMPARE(notificationSpyExt.count(), 1);
QList<QVariant> arguments = notificationSpy.takeFirst();
- QCOMPARE(arguments.at(0).toString(), noEscapeTableName);
+ QCOMPARE(arguments.at(0).toString(), tableName);
arguments = notificationSpyExt.takeFirst();
- QCOMPARE(arguments.at(0).toString(), noEscapeTableName);
- db.driver()->unsubscribeFromNotification(noEscapeTableName);
+ QCOMPARE(arguments.at(0).toString(), tableName);
+ db.driver()->unsubscribeFromNotification(tableName);
QVERIFY_SQL(q, exec("INSERT INTO " + tableName + " (id, realVal) VALUES (1, 2.3)"));
QTRY_COMPARE(notificationSpy.count(), 0);
QTRY_COMPARE(notificationSpyExt.count(), 0);
diff --git a/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp b/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp
index 784d0a70d7..710f26b72d 100644
--- a/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp
+++ b/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp
@@ -1098,7 +1098,7 @@ void tst_QSqlQuery::record()
for (int i = 0; i < 3; ++i)
QCOMPARE(q.record().field(i).tableName().toLower(), lowerQTest);
q.clear();
- const auto tst_record = qTableName("tst_record", __FILE__, db, false).toLower();
+ const auto tst_record = qTableName("tst_record", __FILE__, db).toLower();
SETUP_RECORD_TABLE;
CHECK_RECORD;
q.clear();
@@ -3763,13 +3763,15 @@ void tst_QSqlQuery::QTBUG_5251()
const QString timetest(qTableName("timetest", __FILE__, db));
tst_Databases::safeDropTable(db, timetest);
QSqlQuery q(db);
- QVERIFY_SQL(q, exec(QStringLiteral("CREATE TABLE ") + timetest + QStringLiteral(" (t TIME)")));
- QVERIFY_SQL(q, exec(QStringLiteral("INSERT INTO ") + timetest +
- QStringLiteral(" VALUES ('1:2:3.666')")));
+ QVERIFY_SQL(q, exec(QStringLiteral("CREATE TABLE \"") + timetest + QStringLiteral("\" (t TIME)")));
+ QVERIFY_SQL(q, exec(QStringLiteral("INSERT INTO \"") + timetest +
+ QStringLiteral("\" VALUES ('1:2:3.666')")));
QSqlTableModel timetestModel(0,db);
timetestModel.setEditStrategy(QSqlTableModel::OnManualSubmit);
timetestModel.setTable(timetest);
+ if (tst_Databases::getDatabaseType(db) == QSqlDriver::PostgreSQL)
+ QEXPECT_FAIL("", "Currently broken for PostgreSQL due to case sensitivity problems - see QTBUG-65788", Abort);
QVERIFY_SQL(timetestModel, select());
QCOMPARE(timetestModel.record(0).field(0).value().toTime().toString("HH:mm:ss.zzz"), QString("01:02:03.666"));
@@ -3778,8 +3780,8 @@ void tst_QSqlQuery::QTBUG_5251()
QVERIFY_SQL(timetestModel, submitAll());
QCOMPARE(timetestModel.record(0).field(0).value().toTime().toString("HH:mm:ss.zzz"), QString("00:12:34.500"));
- QVERIFY_SQL(q, exec(QStringLiteral("UPDATE ") + timetest +
- QStringLiteral(" SET t = '0:11:22.33'")));
+ QVERIFY_SQL(q, exec(QStringLiteral("UPDATE \"") + timetest +
+ QStringLiteral("\" SET t = '0:11:22.33'")));
QVERIFY_SQL(timetestModel, select());
QCOMPARE(timetestModel.record(0).field(0).value().toTime().toString("HH:mm:ss.zzz"), QString("00:11:22.330"));
diff --git a/tests/auto/sql/models/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp b/tests/auto/sql/models/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp
index 722ef9c570..e4a277e096 100644
--- a/tests/auto/sql/models/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp
+++ b/tests/auto/sql/models/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp
@@ -122,13 +122,13 @@ void tst_QSqlRelationalTableModel::recreateTestTables(QSqlDatabase db)
QVERIFY_SQL( q, exec("insert into " + reltest5 + " values('mister', 'Mr')"));
if (testWhiteSpaceNames(db.driverName())) {
- const auto reltest6 = qTableName("rel test6", __FILE__, db);
+ QString reltest6 = db.driver()->escapeIdentifier(qTableName("rel", __FILE__, db) + " test6", QSqlDriver::TableName);
QVERIFY_SQL( q, exec("create table " + reltest6 + " (id int not null primary key, " + db.driver()->escapeIdentifier("city key", QSqlDriver::FieldName) +
" int, " + db.driver()->escapeIdentifier("extra field", QSqlDriver::FieldName) + " int)"));
QVERIFY_SQL( q, exec("insert into " + reltest6 + " values(1, 1,9)"));
QVERIFY_SQL( q, exec("insert into " + reltest6 + " values(2, 2,8)"));
- const auto reltest7 = qTableName("rel test7", __FILE__, db);
+ QString reltest7 = db.driver()->escapeIdentifier(qTableName("rel", __FILE__, db) + " test7", QSqlDriver::TableName);
QVERIFY_SQL( q, exec("create table " + reltest7 + " (" + db.driver()->escapeIdentifier("city id", QSqlDriver::TableName) + " int not null primary key, " + db.driver()->escapeIdentifier("city name", QSqlDriver::FieldName) + " varchar(20))"));
QVERIFY_SQL( q, exec("insert into " + reltest7 + " values(1, 'New York')"));
QVERIFY_SQL( q, exec("insert into " + reltest7 + " values(2, 'Washington')"));
@@ -170,8 +170,8 @@ void tst_QSqlRelationalTableModel::dropTestTables( QSqlDatabase db )
<< reltest3
<< reltest4
<< reltest5
- << qTableName("rel test6", __FILE__, db)
- << qTableName("rel test7", __FILE__, db)
+ << (qTableName("rel", __FILE__, db) + " test6")
+ << (qTableName( "rel", __FILE__, db) + " test7")
<< qTableName("CASETEST1", db)
<< qTableName("casetest1", db);
tst_Databases::safeDropTables( db, tableNames );
@@ -1379,9 +1379,9 @@ void tst_QSqlRelationalTableModel::whiteSpaceInIdentifiers()
if (!testWhiteSpaceNames(db.driverName()))
QSKIP("White space test irrelevant for driver");
QSqlRelationalTableModel model(0, db);
- model.setTable(qTableName("rel test6", __FILE__, db));
+ model.setTable(db.driver()->escapeIdentifier(qTableName("rel", __FILE__, db) + " test6", QSqlDriver::TableName));
model.setSort(0, Qt::DescendingOrder);
- model.setRelation(1, QSqlRelation(qTableName("rel test7", __FILE__, db),
+ model.setRelation(1, QSqlRelation(db.driver()->escapeIdentifier(qTableName("rel", __FILE__, db) + " test7", QSqlDriver::TableName),
db.driver()->escapeIdentifier("city id", QSqlDriver::FieldName),
db.driver()->escapeIdentifier("city name", QSqlDriver::FieldName)));
QVERIFY_SQL(model, select());
@@ -1547,6 +1547,8 @@ void tst_QSqlRelationalTableModel::relationOnFirstColumn()
//modify the model data
QVERIFY_SQL(model, setData(model.index(0, 0), 40));
+ if (tst_Databases::getDatabaseType(db) == QSqlDriver::PostgreSQL)
+ QEXPECT_FAIL("", "Currently broken for PostgreSQL due to case sensitivity problems - see QTBUG-65788", Abort);
QVERIFY_SQL(model, submit());
QVERIFY_SQL(model, setData(model.index(1, 0), 50));
QVERIFY_SQL(model, submit());
diff --git a/tests/auto/sql/models/qsqltablemodel/tst_qsqltablemodel.cpp b/tests/auto/sql/models/qsqltablemodel/tst_qsqltablemodel.cpp
index b617151a36..da31f437d9 100644
--- a/tests/auto/sql/models/qsqltablemodel/tst_qsqltablemodel.cpp
+++ b/tests/auto/sql/models/qsqltablemodel/tst_qsqltablemodel.cpp
@@ -383,6 +383,8 @@ void tst_QSqlTableModel::selectRow()
q.exec("UPDATE " + tbl + " SET a = 'Qt' WHERE id = 1");
QCOMPARE(model.data(idx).toString(), QString("b"));
model.selectRow(1);
+ if (tst_Databases::getDatabaseType(db) == QSqlDriver::PostgreSQL)
+ QEXPECT_FAIL("", "Currently broken for PostgreSQL due to case sensitivity problems - see QTBUG-65788", Abort);
QCOMPARE(model.data(idx).toString(), QString("Qt"));
// Check if selectRow() refreshes a changed row.
@@ -439,6 +441,8 @@ void tst_QSqlTableModel::selectRowOverride()
// both rows should have changed
QCOMPARE(model.data(idx).toString(), QString("Qt"));
idx = model.index(2, 1);
+ if (tst_Databases::getDatabaseType(db) == QSqlDriver::PostgreSQL)
+ QEXPECT_FAIL("", "Currently broken for PostgreSQL due to case sensitivity problems - see QTBUG-65788", Abort);
QCOMPARE(model.data(idx).toString(), QString("Qt"));
q.exec("DELETE FROM " + tbl);
@@ -850,6 +854,8 @@ void tst_QSqlTableModel::insertRowFailure()
// populate 1 row
const QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
+ if (dbType == QSqlDriver::PostgreSQL && submitpolicy != QSqlTableModel::OnManualSubmit)
+ QEXPECT_FAIL("", "Currently broken for PostgreSQL due to case sensitivity problems - see QTBUG-65788", Abort);
QVERIFY_SQL(model, insertRecord(0, values));
QVERIFY_SQL(model, submitAll());
QVERIFY_SQL(model, select());
@@ -893,6 +899,8 @@ void tst_QSqlTableModel::insertRowFailure()
// restore empty table
model.revertAll();
QVERIFY_SQL(model, removeRow(0));
+ if (dbType == QSqlDriver::PostgreSQL)
+ QEXPECT_FAIL("", "Currently broken for PostgreSQL due to case sensitivity problems - see QTBUG-65788", Abort);
QVERIFY_SQL(model, submitAll());
QVERIFY_SQL(model, select());
QCOMPARE(model.rowCount(), 0);
@@ -2001,6 +2009,8 @@ void tst_QSqlTableModel::tableModifyWithBlank()
//Should be equivalent to QSqlQuery INSERT INTO... command)
QVERIFY_SQL(model, insertRow(0));
QVERIFY_SQL(model, setData(model.index(0,0),timeString));
+ if (tst_Databases::getDatabaseType(db) == QSqlDriver::PostgreSQL)
+ QEXPECT_FAIL("", "Currently broken for PostgreSQL due to case sensitivity problems - see QTBUG-65788", Abort);
QVERIFY_SQL(model, submitAll());
//set a filter on the table so the only record we get is the one we just made
--
2.21.0

View File

@ -0,0 +1,34 @@
From a473f90a3637255d8443ab8621b57a3e9d90b031 Mon Sep 17 00:00:00 2001
From: Fabian Vogt <fabian@ritter-vogt.de>
Date: Thu, 6 Jun 2019 20:05:27 +0200
Subject: [PATCH 1/3] Revert "Fix QMAKE_PRL_INSTALL_REPLACE for macOS"
This reverts commit 015d7f16cb0b6812950caa3bcde3b6758403ae34.
---
mkspecs/features/qt_common.prf | 8 ++------
1 file changed, 2 insertions(+), 6 deletions(-)
diff --git a/mkspecs/features/qt_common.prf b/mkspecs/features/qt_common.prf
index e64dfa98c2..17a07dbab9 100644
--- a/mkspecs/features/qt_common.prf
+++ b/mkspecs/features/qt_common.prf
@@ -49,14 +49,10 @@ contains(TEMPLATE, .*lib) {
lib_replace.match = $$rplbase/lib
lib_replace.replace = $$qqt_libdir
}
+ !equals(qt_libdir, $$rplbase/lib): \
+ lib_replace.match = \\($$lib_replace.match\\)\\|\\($$qt_libdir\\)
lib_replace.CONFIG = path
QMAKE_PRL_INSTALL_REPLACE += lib_replace
- !equals(qt_libdir, $$rplbase/lib) {
- qtlibdir_replace.match = $$qt_libdir
- qtlibdir_replace.replace = $$qqt_libdir
- qtlibdir_replace.CONFIG = path
- QMAKE_PRL_INSTALL_REPLACE += qtlibdir_replace
- }
}
# The remainder of this file must not apply to host tools/libraries,
--
2.21.0

View File

@ -0,0 +1,147 @@
From c28456522b71dfb207bfe47f91d6b0eeaec109bf Mon Sep 17 00:00:00 2001
From: Fabian Vogt <fabian@ritter-vogt.de>
Date: Fri, 7 Jun 2019 13:31:40 +0200
Subject: [PATCH] Revert "qmake: link qt libraries by full path"
This reverts commit 5b3dfa470ed7ea40103daa785286ab71fb7aa230.
---
mkspecs/features/qt.prf | 31 +++++++++++++++++-------------
mkspecs/features/win32/opengl.prf | 16 ++++-----------
mkspecs/features/win32/windows.prf | 7 ++++---
mkspecs/linux-lsb-g++/qmake.conf | 1 +
4 files changed, 27 insertions(+), 28 deletions(-)
diff --git a/mkspecs/features/qt.prf b/mkspecs/features/qt.prf
index 3a71376029..5ac640190a 100644
--- a/mkspecs/features/qt.prf
+++ b/mkspecs/features/qt.prf
@@ -145,14 +145,12 @@ import_plugins:qtConfig(static) {
# the plugin path. Unknown plugins must rely on the default link path.
plug_type = $$eval(QT_PLUGIN.$${plug}.TYPE)
!isEmpty(plug_type) {
- plug_name = $$QMAKE_PREFIX_STATICLIB$${plug}$$qtPlatformTargetSuffix().$$QMAKE_EXTENSION_STATICLIB
plug_path = $$eval(QT_PLUGIN.$${plug}.PATH)
isEmpty(plug_path): \
plug_path = $$[QT_INSTALL_PLUGINS/get]
- LIBS += $$plug_path/$$plug_type/$$plug_name
- } else {
- LIBS += -l$${plug}$$qtPlatformTargetSuffix()
+ LIBS += -L$$plug_path/$$plug_type
}
+ LIBS += -l$${plug}$$qtPlatformTargetSuffix()
}
}
@@ -197,6 +195,8 @@ for(ever) {
qtProcessModuleFlags(DEFINES, QT.$${QTLIB}.DEFINES)
MODULE_INCLUDES -= $$QMAKE_DEFAULT_INCDIRS
+ MODULE_LIBS_ADD = $$MODULE_LIBS
+ MODULE_LIBS_ADD -= $$QMAKE_DEFAULT_LIBDIRS
# Frameworks shouldn't need include paths, but much code does not use
# module-qualified #includes, so by default we add paths which point
@@ -209,17 +209,23 @@ for(ever) {
!isEmpty(MODULE_MODULE) {
contains(MODULE_CONFIG, lib_bundle) {
framework = $$MODULE_MODULE
- # Linking frameworks by absolute path does not work.
LIBS$$var_sfx += -framework $$framework
} else {
+ !isEmpty(MODULE_LIBS_ADD): \
+ LIBS$$var_sfx += -L$$MODULE_LIBS_ADD
+
lib = $$MODULE_MODULE$$qtPlatformTargetSuffix()
- win32|contains(MODULE_CONFIG, staticlib) {
- lib = $$MODULE_LIBS/$$QMAKE_PREFIX_STATICLIB$${lib}.$$QMAKE_EXTENSION_STATICLIB
- PRE_TARGETDEPS += $$lib
- } else {
- lib = $$MODULE_LIBS/$$QMAKE_PREFIX_SHLIB$${lib}.$$QMAKE_EXTENSION_SHLIB
+ LIBS$$var_sfx += -l$$lib
+
+ contains(MODULE_CONFIG, staticlib): \
+ PRE_TARGETDEPS *= $$MODULE_LIBS/$${QMAKE_PREFIX_STATICLIB}$${lib}.$${QMAKE_EXTENSION_STATICLIB}
+
+ !isEmpty(QMAKE_LSB) {
+ !isEmpty(MODULE_LIBS_ADD): \
+ QMAKE_LFLAGS *= --lsb-libpath=$$MODULE_LIBS_ADD
+ QMAKE_LFLAGS *= --lsb-shared-libs=$$lib
+ QMAKE_LIBDIR *= /opt/lsb/lib
}
- LIBS$$var_sfx += $$lib
}
}
QMAKE_USE$$var_sfx += $$MODULE_USES
@@ -289,8 +295,7 @@ contains(all_qt_module_deps, qml): \
for (key, IMPORTS._KEYS_) {
PATH = $$eval(IMPORTS.$${key}.path)
PLUGIN = $$eval(IMPORTS.$${key}.plugin)
- !isEmpty(PATH):!isEmpty(PLUGIN): \
- LIBS += $$PATH/$$QMAKE_PREFIX_STATICLIB$${PLUGIN}$$qtPlatformTargetSuffix().$$QMAKE_EXTENSION_STATICLIB
+ !isEmpty(PATH):!isEmpty(PLUGIN): LIBS *= -L$$PATH -l$${PLUGIN}$$qtPlatformTargetSuffix()
}
# create qml_plugin_import.cpp
diff --git a/mkspecs/features/win32/opengl.prf b/mkspecs/features/win32/opengl.prf
index f21848f941..c6fba7770f 100644
--- a/mkspecs/features/win32/opengl.prf
+++ b/mkspecs/features/win32/opengl.prf
@@ -1,21 +1,13 @@
QT_FOR_CONFIG += gui
-defineTest(prependOpenGlLib) {
- path = $$QT.core.libs/$$QMAKE_PREFIX_STATICLIB$$1
- ext = .$$QMAKE_EXTENSION_STATICLIB
- QMAKE_LIBS_OPENGL_ES2 = $${path}$${ext} $$QMAKE_LIBS_OPENGL_ES2
- QMAKE_LIBS_OPENGL_ES2_DEBUG = $${path}d$${ext} $$QMAKE_LIBS_OPENGL_ES2_DEBUG
- export(QMAKE_LIBS_OPENGL_ES2)
- export(QMAKE_LIBS_OPENGL_ES2_DEBUG)
-}
-
qtConfig(opengles2) {
# Depending on the configuration we use libQtANGLE or libEGL and libGLESv2
qtConfig(combined-angle-lib) {
- prependOpenGlLib($$LIBQTANGLE_NAME)
+ QMAKE_LIBS_OPENGL_ES2 = -l$${LIBQTANGLE_NAME} $$QMAKE_LIBS_OPENGL_ES2
+ QMAKE_LIBS_OPENGL_ES2_DEBUG = -l$${LIBQTANGLE_NAME}d $$QMAKE_LIBS_OPENGL_ES2_DEBUG
} else {
- prependOpenGlLib($$LIBGLESV2_NAME)
- prependOpenGlLib($$LIBEGL_NAME)
+ QMAKE_LIBS_OPENGL_ES2 = -l$${LIBEGL_NAME} -l$${LIBGLESV2_NAME} $$QMAKE_LIBS_OPENGL_ES2
+ QMAKE_LIBS_OPENGL_ES2_DEBUG = -l$${LIBEGL_NAME}d -l$${LIBGLESV2_NAME}d $$QMAKE_LIBS_OPENGL_ES2_DEBUG
}
# For Desktop, use the ANGLE library location passed on from configure.
INCLUDEPATH += $$QMAKE_INCDIR_OPENGL_ES2
diff --git a/mkspecs/features/win32/windows.prf b/mkspecs/features/win32/windows.prf
index 272170d428..ecb167bf18 100644
--- a/mkspecs/features/win32/windows.prf
+++ b/mkspecs/features/win32/windows.prf
@@ -6,9 +6,10 @@ contains(TEMPLATE, ".*app") {
qt:for(entryLib, $$list($$unique(QMAKE_LIBS_QT_ENTRY))) {
isEqual(entryLib, -lqtmain) {
- lib = $$QT.core.libs/$${QMAKE_PREFIX_STATICLIB}qtmain$$QT_LIBINFIX$$qtPlatformTargetSuffix().$$QMAKE_EXTENSION_STATICLIB
- PRE_TARGETDEPS += $$lib
- QMAKE_LIBS += $$lib
+ !contains(QMAKE_DEFAULT_LIBDIRS, $$QT.core.libs): \
+ QMAKE_LIBS += -L$$QT.core.libs
+ CONFIG(debug, debug|release): QMAKE_LIBS += $${entryLib}$${QT_LIBINFIX}d
+ else: QMAKE_LIBS += $${entryLib}$${QT_LIBINFIX}
} else {
QMAKE_LIBS += $${entryLib}
}
diff --git a/mkspecs/linux-lsb-g++/qmake.conf b/mkspecs/linux-lsb-g++/qmake.conf
index eb7b87b57b..80353cd5f6 100644
--- a/mkspecs/linux-lsb-g++/qmake.conf
+++ b/mkspecs/linux-lsb-g++/qmake.conf
@@ -13,6 +13,7 @@ load(qt_config)
QMAKE_LIBS_THREAD += -lrt
+QMAKE_LSB = 1
QMAKE_CC = lsbcc
QMAKE_CXX = lsbc++
--
2.21.0

View File

@ -0,0 +1,26 @@
From 71b2d89fd5e3427b767e29b5f0bb6d4ca41806fa Mon Sep 17 00:00:00 2001
From: Fabian Vogt <fabian@ritter-vogt.de>
Date: Thu, 6 Jun 2019 20:05:37 +0200
Subject: [PATCH 2/3] Revert "Replace absolute Qt lib dir in .prl files"
This reverts commit f00de3322e05c62021082463b6de24805afc1355.
---
mkspecs/features/qt_common.prf | 2 --
1 file changed, 2 deletions(-)
diff --git a/mkspecs/features/qt_common.prf b/mkspecs/features/qt_common.prf
index 17a07dbab9..e51aa4766b 100644
--- a/mkspecs/features/qt_common.prf
+++ b/mkspecs/features/qt_common.prf
@@ -49,8 +49,6 @@ contains(TEMPLATE, .*lib) {
lib_replace.match = $$rplbase/lib
lib_replace.replace = $$qqt_libdir
}
- !equals(qt_libdir, $$rplbase/lib): \
- lib_replace.match = \\($$lib_replace.match\\)\\|\\($$qt_libdir\\)
lib_replace.CONFIG = path
QMAKE_PRL_INSTALL_REPLACE += lib_replace
}
--
2.21.0

View File

@ -15,11 +15,11 @@ This reverts commit 3b514f853595c686d4ed8830567c1f27ea533faf.
src/testlib/qtaptestlogger.cpp | 11 +----------
7 files changed, 4 insertions(+), 50 deletions(-)
diff --git a/src/corelib/kernel/qvariant.cpp b/src/corelib/kernel/qvariant.cpp
index 090436a3c7..6541b97595 100644
--- a/src/corelib/kernel/qvariant.cpp
+++ b/src/corelib/kernel/qvariant.cpp
@@ -1052,13 +1052,11 @@ static bool convert(const QVariant::Private *d, int t, void *result, bool *ok)
Index: qtbase-everywhere-src-5.13.0-beta2/src/corelib/kernel/qvariant.cpp
===================================================================
--- qtbase-everywhere-src-5.13.0-beta2.orig/src/corelib/kernel/qvariant.cpp
+++ qtbase-everywhere-src-5.13.0-beta2/src/corelib/kernel/qvariant.cpp
@@ -1052,13 +1052,11 @@ static bool convert(const QVariant::Priv
return false;
#ifndef QT_BOOTSTRAPPED
@ -33,7 +33,7 @@ index 090436a3c7..6541b97595 100644
case QMetaType::QJsonValue:
switch (d->type) {
case QMetaType::Nullptr:
@@ -1234,11 +1232,9 @@ static bool convert(const QVariant::Private *d, int t, void *result, bool *ok)
@@ -1234,11 +1232,9 @@ static bool convert(const QVariant::Priv
case QVariant::Url:
*static_cast<QCborValue *>(result) = QCborValue(*v_cast<QUrl>(d));
break;
@ -45,11 +45,11 @@ index 090436a3c7..6541b97595 100644
case QVariant::Uuid:
*static_cast<QCborValue *>(result) = QCborValue(*v_cast<QUuid>(d));
break;
diff --git a/src/corelib/serialization/qcborvalue.cpp b/src/corelib/serialization/qcborvalue.cpp
index 80ef515fd2..e53b6a0326 100644
--- a/src/corelib/serialization/qcborvalue.cpp
+++ b/src/corelib/serialization/qcborvalue.cpp
@@ -1771,7 +1771,6 @@ QCborValue::QCborValue(const QUrl &url)
Index: qtbase-everywhere-src-5.13.0-beta2/src/corelib/serialization/qcborvalue.cpp
===================================================================
--- qtbase-everywhere-src-5.13.0-beta2.orig/src/corelib/serialization/qcborvalue.cpp
+++ qtbase-everywhere-src-5.13.0-beta2/src/corelib/serialization/qcborvalue.cpp
@@ -1772,7 +1772,6 @@ QCborValue::QCborValue(const QUrl &url)
container->elements[1].type = String;
}
@ -57,7 +57,7 @@ index 80ef515fd2..e53b6a0326 100644
/*!
Creates a QCborValue object of the regular expression pattern extended type
and containing the value represented by \a rx. The value can later be retrieved
@@ -1790,7 +1789,6 @@ QCborValue::QCborValue(const QRegularExpression &rx)
@@ -1791,7 +1790,6 @@ QCborValue::QCborValue(const QRegularExp
// change type
t = RegularExpression;
}
@ -65,7 +65,7 @@ index 80ef515fd2..e53b6a0326 100644
/*!
Creates a QCborValue object of the UUID extended type and containing the
@@ -1944,7 +1942,6 @@ QUrl QCborValue::toUrl(const QUrl &defaultValue) const
@@ -1945,7 +1943,6 @@ QUrl QCborValue::toUrl(const QUrl &defau
return QUrl::fromEncoded(byteData->asByteArrayView());
}
@ -73,7 +73,7 @@ index 80ef515fd2..e53b6a0326 100644
/*!
Returns the regular expression value stored in this QCborValue, if it is of
the regular expression pattern extended type. Otherwise, it returns \a
@@ -1963,7 +1960,6 @@ QRegularExpression QCborValue::toRegularExpression(const QRegularExpression &def
@@ -1964,7 +1961,6 @@ QRegularExpression QCborValue::toRegular
Q_ASSERT(n == -1);
return QRegularExpression(container->stringAt(1));
}
@ -81,7 +81,7 @@ index 80ef515fd2..e53b6a0326 100644
/*!
Returns the UUID value stored in this QCborValue, if it is of the UUID
@@ -2404,16 +2400,12 @@ uint qHash(const QCborValue &value, uint seed)
@@ -2874,16 +2870,12 @@ uint qHash(const QCborValue &value, uint
return qHash(value.toDateTime(), seed);
case QCborValue::Url:
return qHash(value.toUrl(), seed);
@ -98,7 +98,7 @@ index 80ef515fd2..e53b6a0326 100644
}
Q_ASSERT(value.isSimpleType());
@@ -2458,16 +2450,12 @@ static QDebug debugContents(QDebug &dbg, const QCborValue &v)
@@ -2928,16 +2920,12 @@ static QDebug debugContents(QDebug &dbg,
return dbg << v.toDateTime();
case QCborValue::Url:
return dbg << v.toUrl();
@ -115,10 +115,10 @@ index 80ef515fd2..e53b6a0326 100644
}
if (v.isSimpleType())
return dbg << v.toSimpleType();
diff --git a/src/corelib/serialization/qcborvalue.h b/src/corelib/serialization/qcborvalue.h
index d6ba4e88d8..105af1ba73 100644
--- a/src/corelib/serialization/qcborvalue.h
+++ b/src/corelib/serialization/qcborvalue.h
Index: qtbase-everywhere-src-5.13.0-beta2/src/corelib/serialization/qcborvalue.h
===================================================================
--- qtbase-everywhere-src-5.13.0-beta2.orig/src/corelib/serialization/qcborvalue.h
+++ qtbase-everywhere-src-5.13.0-beta2/src/corelib/serialization/qcborvalue.h
@@ -43,9 +43,7 @@
#include <QtCore/qbytearray.h>
#include <QtCore/qdatetime.h>
@ -130,7 +130,7 @@ index d6ba4e88d8..105af1ba73 100644
#include <QtCore/qstring.h>
#include <QtCore/qstringview.h>
#include <QtCore/qurl.h>
@@ -157,9 +155,7 @@ public:
@@ -159,9 +157,7 @@ public:
explicit QCborValue(const QDateTime &dt);
explicit QCborValue(const QUrl &url);
@ -140,7 +140,7 @@ index d6ba4e88d8..105af1ba73 100644
explicit QCborValue(const QUuid &uuid);
~QCborValue() { if (container) dispose(); }
@@ -237,9 +233,7 @@ public:
@@ -239,9 +235,7 @@ public:
QString toString(const QString &defaultValue = {}) const;
QDateTime toDateTime(const QDateTime &defaultValue = {}) const;
QUrl toUrl(const QUrl &defaultValue = {}) const;
@ -149,7 +149,7 @@ index d6ba4e88d8..105af1ba73 100644
-#endif
QUuid toUuid(const QUuid &defaultValue = {}) const;
#ifdef Q_QDOC
// only forward-declared, need split functions
@@ -386,10 +380,8 @@ public:
{ return concrete().toDateTime(defaultValue); }
QUrl toUrl(const QUrl &defaultValue = {}) const
@ -161,10 +161,10 @@ index d6ba4e88d8..105af1ba73 100644
QUuid toUuid(const QUuid &defaultValue = {}) const
{ return concrete().toUuid(defaultValue); }
diff --git a/src/corelib/serialization/qjsoncbor.cpp b/src/corelib/serialization/qjsoncbor.cpp
index 4f756df97c..158f1950d0 100644
--- a/src/corelib/serialization/qjsoncbor.cpp
+++ b/src/corelib/serialization/qjsoncbor.cpp
Index: qtbase-everywhere-src-5.13.0-beta2/src/corelib/serialization/qjsoncbor.cpp
===================================================================
--- qtbase-everywhere-src-5.13.0-beta2.orig/src/corelib/serialization/qjsoncbor.cpp
+++ qtbase-everywhere-src-5.13.0-beta2/src/corelib/serialization/qjsoncbor.cpp
@@ -543,19 +543,14 @@ QVariant QCborValue::toVariant() const
case Url:
return toUrl();
@ -185,7 +185,7 @@ index 4f756df97c..158f1950d0 100644
}
if (isSimpleType())
@@ -719,10 +714,8 @@ QCborValue QCborValue::fromVariant(const QVariant &variant)
@@ -719,10 +714,8 @@ QCborValue QCborValue::fromVariant(const
case QVariant::Hash:
return QCborMap::fromVariantHash(variant.toHash());
#ifndef QT_BOOTSTRAPPED
@ -196,10 +196,10 @@ index 4f756df97c..158f1950d0 100644
case QMetaType::QJsonValue:
return fromJsonValue(variant.toJsonValue());
case QMetaType::QJsonObject:
diff --git a/src/plugins/platforms/eglfs/api/qeglfsdeviceintegration.cpp b/src/plugins/platforms/eglfs/api/qeglfsdeviceintegration.cpp
index 0a3a37863a..f151713400 100644
--- a/src/plugins/platforms/eglfs/api/qeglfsdeviceintegration.cpp
+++ b/src/plugins/platforms/eglfs/api/qeglfsdeviceintegration.cpp
Index: qtbase-everywhere-src-5.13.0-beta2/src/plugins/platforms/eglfs/api/qeglfsdeviceintegration.cpp
===================================================================
--- qtbase-everywhere-src-5.13.0-beta2.orig/src/plugins/platforms/eglfs/api/qeglfsdeviceintegration.cpp
+++ qtbase-everywhere-src-5.13.0-beta2/src/plugins/platforms/eglfs/api/qeglfsdeviceintegration.cpp
@@ -51,9 +51,7 @@
#include <private/qguiapplication_p.h>
#include <QScreen>
@ -211,10 +211,10 @@ index 0a3a37863a..f151713400 100644
#include <QLoggingCategory>
#if defined(Q_OS_LINUX)
diff --git a/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp b/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp
index d42a33c22b..ddb8f45188 100644
--- a/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp
+++ b/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp
Index: qtbase-everywhere-src-5.13.0-beta2/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp
===================================================================
--- qtbase-everywhere-src-5.13.0-beta2.orig/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp
+++ qtbase-everywhere-src-5.13.0-beta2/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp
@@ -48,9 +48,7 @@
#undef register
#include <GL/glx.h>
@ -242,10 +242,10 @@ index d42a33c22b..ddb8f45188 100644
}
if (!m_supportsThreading) {
qCDebug(lcQpaGl).nospace() << "Multithreaded OpenGL disabled: "
diff --git a/src/testlib/qtaptestlogger.cpp b/src/testlib/qtaptestlogger.cpp
index 540b36e273..e73609de3d 100644
--- a/src/testlib/qtaptestlogger.cpp
+++ b/src/testlib/qtaptestlogger.cpp
Index: qtbase-everywhere-src-5.13.0-beta2/src/testlib/qtaptestlogger.cpp
===================================================================
--- qtbase-everywhere-src-5.13.0-beta2.orig/src/testlib/qtaptestlogger.cpp
+++ qtbase-everywhere-src-5.13.0-beta2/src/testlib/qtaptestlogger.cpp
@@ -43,9 +43,7 @@
#include "qtestresult_p.h"
#include "qtestassert.h"
@ -257,7 +257,7 @@ index 540b36e273..e73609de3d 100644
QT_BEGIN_NAMESPACE
@@ -150,7 +148,6 @@ void QTapTestLogger::addIncident(IncidentTypes type, const char *description,
@@ -150,7 +148,6 @@ void QTapTestLogger::addIncident(Inciden
outputString(YAML_INDENT "---\n");
if (type != XFail) {
@ -265,7 +265,7 @@ index 540b36e273..e73609de3d 100644
// This is fragile, but unfortunately testlib doesn't plumb
// the expected and actual values to the loggers (yet).
static QRegularExpression verifyRegex(
@@ -211,12 +208,6 @@ void QTapTestLogger::addIncident(IncidentTypes type, const char *description,
@@ -211,12 +208,6 @@ void QTapTestLogger::addIncident(Inciden
YAML_INDENT "# %s\n", description);
outputString(unparsableDescription.data());
}
@ -278,6 +278,3 @@ index 540b36e273..e73609de3d 100644
}
if (file) {
--
2.20.1

View File

@ -0,0 +1,50 @@
From 34db59a076dd824401f952b305a4f575b0140f79 Mon Sep 17 00:00:00 2001
From: Dmitry Kazakov <dimula73@gmail.com>
Date: Mon, 11 Mar 2019 13:18:06 +0300
Subject: [PATCH 2/3] Synthesize Enter/LeaveEvent for accepted QTabletEvent
When the tablet event is accepted, then Qt doesn't synthesize a mouse
event, it means that QApplicationPrivate::sendMouseEvent() will not be
called, and, therefore, enter/leave events will not be dispatched.
The patch looks a bit hackish. Ideally, the synthesize should happen
in QGuiApplicationPrivate::processTabletEvent(), which takes the decision
about synthesizing mouse events. But there is not enough information
on this level: neither qt_last_mouse_receiver nor the receiver widget
are known at this stage.
On Windows and other platforms where there is a parallel stream of
mouse events synthesized by the platform, we shouldn't generate these
events manually.
Change-Id: Ifbad6284483ee282ad129db54606f5d0d9ddd633
---
src/widgets/kernel/qwidgetwindow.cpp | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/src/widgets/kernel/qwidgetwindow.cpp b/src/widgets/kernel/qwidgetwindow.cpp
index fbc71cd0ea..729a7f701a 100644
--- a/src/widgets/kernel/qwidgetwindow.cpp
+++ b/src/widgets/kernel/qwidgetwindow.cpp
@@ -1051,6 +1051,18 @@ void QWidgetWindow::handleTabletEvent(QTabletEvent *event)
event->setAccepted(ev.isAccepted());
}
+ /**
+ * Synthesize Enter/Leave events if it is requested by the system and user
+ */
+ if (widget != qt_last_mouse_receiver &&
+ event->isAccepted() &&
+ !QWindowSystemInterfacePrivate::TabletEvent::platformSynthesizesMouse &&
+ qApp->testAttribute(Qt::AA_SynthesizeMouseForUnhandledTabletEvents)) {
+
+ QApplicationPrivate::dispatchEnterLeave(widget, qt_last_mouse_receiver, event->globalPos());
+ qt_last_mouse_receiver = widget;
+ }
+
if (event->type() == QEvent::TabletRelease && event->buttons() == Qt::NoButton)
qt_tablet_target = 0;
}
--
2.21.0

View File

@ -0,0 +1,30 @@
From d3506e73971e681c061edd3fb7c693ccd405c77c Mon Sep 17 00:00:00 2001
From: Dmitry Kazakov <dimula73@gmail.com>
Date: Sun, 10 Mar 2019 14:51:28 +0300
Subject: [PATCH 3/3] Add an ID for recognition of UGEE tablets
Change-Id: I2228ee9d53aa23a2d2cd9970a363d8424e744093
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
---
src/plugins/platforms/xcb/qxcbconnection_xi2.cpp | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp b/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
index e4da207b00..bc09fe2f91 100644
--- a/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
+++ b/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
@@ -240,6 +240,10 @@ void QXcbConnection::xi2SetupDevice(void *info, bool removeExisting)
} else if (name.contains("uc-logic") && isTablet) {
tabletData.pointerType = QTabletEvent::Pen;
dbgType = QLatin1String("pen");
+ } else if (name.contains("ugee")) {
+ isTablet = true;
+ tabletData.pointerType = QTabletEvent::Pen;
+ dbgType = QLatin1String("pen");
} else {
isTablet = false;
}
--
2.21.0

View File

@ -0,0 +1,29 @@
From debbdd25835318dc4848488da4dc0acfd27b3332 Mon Sep 17 00:00:00 2001
From: Fabian Vogt <fabian@ritter-vogt.de>
Date: Thu, 6 Jun 2019 20:06:08 +0200
Subject: [PATCH 3/3] Revert "Fix prl replacements if libdir is in
QMAKE_DEFAULT_LIBDIRS"
This reverts commit d5071a4016ec663f8ec7c89ec7ebabea54b3260f.
---
mkspecs/features/qt_common.prf | 4 ----
1 file changed, 4 deletions(-)
diff --git a/mkspecs/features/qt_common.prf b/mkspecs/features/qt_common.prf
index e51aa4766b..843916b3b1 100644
--- a/mkspecs/features/qt_common.prf
+++ b/mkspecs/features/qt_common.prf
@@ -39,10 +39,6 @@ contains(TEMPLATE, .*lib) {
qt_libdir = $$[QT_INSTALL_LIBS]
}
contains(QMAKE_DEFAULT_LIBDIRS, $$qt_libdir) {
- lib_replace0.match = $$rplbase/lib/
- lib_replace0.replace = $$qqt_libdir/
- lib_replace0.CONFIG = path
- QMAKE_PRL_INSTALL_REPLACE += lib_replace0
lib_replace.match = "[^ ']*$$rplbase/lib"
lib_replace.replace =
} else {
--
2.21.0

View File

@ -1,9 +1,85 @@
-------------------------------------------------------------------
Wed Jun 26 12:20:32 UTC 2019 - Fabian Vogt <fabian@ritter-vogt.de>
- Add patch to restore compatibility with akonadi's PGSQL backend
(see https://bugs.archlinux.org/task/62997):
* 0001-Revert-Always-escape-the-table-names-when-creating-t.patch
-------------------------------------------------------------------
Wed Jun 19 18:40:41 UTC 2019 - Fabian Vogt <fabian@ritter-vogt.de>
- Disable libzstd support again, it breaks various existing codebases (QTBUG-76521)
-------------------------------------------------------------------
Wed Jun 19 11:19:21 UTC 2019 - fabian@ritter-vogt.de
- Update to 5.13.0:
* New bugfix release
* No changelog available
* For more details about Qt 5.13 please see:
* http://code.qt.io/cgit/qt/qtbase.git/plain/dist/changes-5.13.0/?h=5.13
- Remove patches, now upstream:
* 0001-Add-quoting-to-deal-with-empty-CMAKE_CXX_STANDARD_LI.patch
-------------------------------------------------------------------
Fri Jun 14 11:33:41 UTC 2019 - Fabian Vogt <fabian@ritter-vogt.de>
- Add patches to improve compatibility with Krita:
* 0001-Fix-notification-of-QDockWidget-when-it-gets-undocke.patch
* 0002-Synthesize-Enter-LeaveEvent-for-accepted-QTabletEven.patch
* 0003-Add-an-ID-for-recognition-of-UGEE-tablets.patch
-------------------------------------------------------------------
Fri Jun 7 11:32:21 UTC 2019 - Fabian Vogt <fabian@ritter-vogt.de>
- Revert yet another commit to fix linker errors:
* 0001-Revert-qmake-link-qt-libraries-by-full-path.patch
-------------------------------------------------------------------
Thu Jun 6 18:19:42 UTC 2019 - Fabian Vogt <fabian@ritter-vogt.de>
- Enable libzstd support
-------------------------------------------------------------------
Thu Jun 6 18:09:01 UTC 2019 - Fabian Vogt <fabian@ritter-vogt.de>
- Revert some commits in the hope of fixing some broken paths (QTBUG-76255):
* 0001-Revert-Fix-QMAKE_PRL_INSTALL_REPLACE-for-macOS.patch
* 0002-Revert-Replace-absolute-Qt-lib-dir-in-.prl-files.patch
* 0003-Revert-Fix-prl-replacements-if-libdir-is-in-QMAKE_DE.patch
-------------------------------------------------------------------
Thu Jun 6 13:26:09 UTC 2019 - Fabian Vogt <fabian@ritter-vogt.de>
- Add patch to fix some cmake module config files (QTBUG-76244):
* 0001-Add-quoting-to-deal-with-empty-CMAKE_CXX_STANDARD_LI.patch
-------------------------------------------------------------------
Tue Jun 4 07:24:16 UTC 2019 - fabian@ritter-vogt.de
- Update to 5.13.0-rc:
* New bugfix release
* No changelog available
- Remove patches, now upstream:
* 0001-Fix-page-breaking-with-large-images.patch
-------------------------------------------------------------------
Fri May 31 22:33:07 UTC 2019 - Fabian Vogt <fabian@ritter-vogt.de>
- Add patch to fix layouting of certain text documents (QTBUG-73730):
* 0001-Fix-page-breaking-with-large-images.patch
-------------------------------------------------------------------
Mon Apr 29 09:16:09 UTC 2019 - fabian@ritter-vogt.de
- Update to 5.13.0-beta2:
* New bugfix release
* No changelog available
- Refresh Mesa multithreading whitelist revert:
* Add 0001-Revert-Blacklist-nouveau-and-llvmpipe-for-multithrea.patch
* Refresh 0002-Revert-qtlite-Fix-build-libs-with-no-feature-regular.patch
* Refresh 0003-Revert-White-list-more-recent-Mesa-version-for-multi.patch
-------------------------------------------------------------------
Thu Apr 25 07:37:27 UTC 2019 - Martin Liška <mliska@suse.cz>
@ -23,6 +99,21 @@ Sat Apr 13 10:29:43 UTC 2019 - Christophe Giboudeaux <christophe@krop.fr>
- Add fix-fixqt4headers.patch to use the include path used by our
Qt5 packages.
-------------------------------------------------------------------
Thu Mar 21 10:24:28 UTC 2019 - fabian@ritter-vogt.de
- Update to 5.13.0-beta1:
* New feature release
* For more details about Qt 5.13 please see:
* http://code.qt.io/cgit/qt/qtbase.git/plain/dist/changes-5.13.0/?h=5.13
- Remove patches, now upstream:
* qapplication-emit-palettechanged.patch
* reproducible-qrc-time.patch
- Refresh Mesa multithreading whitelist revert:
* Drop 0001-Revert-Blacklist-nouveau-and-llvmpipe-for-multithrea.patch
* Refresh 0002-Revert-qtlite-Fix-build-libs-with-no-feature-regular.patch
- libQt5XcbQpa is not static, move it to libQt5Gui-private-headers-devel
-------------------------------------------------------------------
Thu Mar 14 08:47:45 UTC 2019 - fabian@ritter-vogt.de
@ -2138,3 +2229,4 @@ Fri Apr 13 13:22:38 UTC 2012 - stephan.binner@basyskom.com
Thu Apr 5 09:56:15 UTC 2012 - dmueller@suse.com
- Initial packaging (Qt 5.0 Alpha)

View File

@ -36,17 +36,17 @@
%endif
Name: libqt5-qtbase
Version: 5.12.3
Version: 5.13.0
Release: 0
Summary: C++ Program Library, Core Components
License: LGPL-2.1-with-Qt-Company-Qt-exception-1.1 or LGPL-3.0-only
Group: System/Libraries
Url: https://www.qt.io
%define base_name libqt5
%define real_version 5.12.3
%define so_version 5.12.3
%define tar_version qtbase-everywhere-src-5.12.3
Source: https://download.qt.io/official_releases/qt/5.12/%{real_version}/submodules/%{tar_version}.tar.xz
%define real_version 5.13.0
%define so_version 5.13.0
%define tar_version qtbase-everywhere-src-5.13.0
Source: https://download.qt.io/official_releases/qt/5.13/%{real_version}/submodules/%{tar_version}.tar.xz
# to get mtime of file:
Source1: libqt5-qtbase.changes
Source2: macros.qt5
@ -68,19 +68,25 @@ Patch13: 0001-Revert-QWidgetWindow-Immediately-forward-close-event.patch
Patch17: 0001-Sanitize-QXcbScreen-s-pixelDensity-values.patch
Patch18: 0002-xcb-Use-the-screen-s-physical-DPI-as-logical-DPI-unl.patch
# PATCH-FIX-UPSTREAM
Patch19: qapplication-emit-palettechanged.patch
# PATCH-FIX-UPSTREAM
Patch20: 0001-Fix-qfloat16-methods-definition-without-declaration-.patch
# PATCH-FIX-OPENSUSE
Patch21: 0001-Revert-Blacklist-nouveau-and-llvmpipe-for-multithrea.patch
Patch22: 0002-Revert-qtlite-Fix-build-libs-with-no-feature-regular.patch
Patch23: 0003-Revert-White-list-more-recent-Mesa-version-for-multi.patch
Patch24: fix-fixqt4headers.patch
# patches 1000-2000 and above from upstream 5.12 branch #
Patch1000: 0001-Fix-page-breaking-with-large-images.patch
# patches 2000-3000 and above from upstream 5.13/dev branch #
Patch2000: reproducible-qrc-time.patch
# Revert to restore compatibility with akonadi and possibly other applications
Patch30: 0001-Revert-Always-escape-the-table-names-when-creating-t.patch
# Reverting some commits in the hope to avoid QTBUG-76255
Patch50: 0001-Revert-Fix-QMAKE_PRL_INSTALL_REPLACE-for-macOS.patch
Patch51: 0002-Revert-Replace-absolute-Qt-lib-dir-in-.prl-files.patch
Patch52: 0003-Revert-Fix-prl-replacements-if-libdir-is-in-QMAKE_DE.patch
Patch53: 0001-Revert-qmake-link-qt-libraries-by-full-path.patch
# patches 1000-2000 and above from upstream 5.13 branch #
Patch1000: 0003-Add-an-ID-for-recognition-of-UGEE-tablets.patch
# patches 2000-3000 and above from upstream 5.14/dev branch #
Patch2000: 0001-Fix-notification-of-QDockWidget-when-it-gets-undocke.patch
# Not accepted yet, https://codereview.qt-project.org/c/qt/qtbase/+/255384
Patch2001: 0002-Synthesize-Enter-LeaveEvent-for-accepted-QTabletEven.patch
BuildRequires: alsa-devel
BuildRequires: cups-devel
BuildRequires: double-conversion-devel
@ -152,6 +158,8 @@ BuildRequires: pkgconfig(sm)
BuildRequires: pkgconfig(xkbcommon) >= 0.4.1
BuildRequires: pkgconfig(xkbcommon-x11) >= 0.4.1
BuildRequires: pkgconfig(zlib)
# Breaks various existing codebases, see QTBUG-76521
# BuildRequires: pkgconfig(libzstd)
%if %journald
BuildRequires: pkgconfig(libsystemd)
%endif
@ -888,6 +896,7 @@ echo yes | ./configure \
-system-freetype \
-cups \
-system-zlib \
-no-zstd \
-no-pch \
-glib \
-sctp \
@ -1232,12 +1241,16 @@ chmod 644 %{buildroot}%{libqt5_docdir}/global/template/images/*.png
%{libqt5_libdir}/libQt5EglFSDeviceIntegration.prl
%{libqt5_libdir}/libQt5EglFsKmsSupport.prl
%{libqt5_libdir}/libQt5EglFsKmsSupport.so
%{libqt5_libdir}/libQt5XcbQpa.so
%{libqt5_libdir}/libQt5XcbQpa.prl
%{libqt5_libdir}/cmake/Qt5Gui/
%{libqt5_libdir}/pkgconfig/Qt5Gui.pc
%{libqt5_includedir}/QtGui/
%{libqt5_includedir}/QtEglFSDeviceIntegration/
%{libqt5_includedir}/QtXkbCommonSupport
%exclude %{libqt5_includedir}/QtGui/%{so_version}
%exclude %{libqt5_includedir}/QtEglFSDeviceIntegration/%{so_version}
%exclude %{libqt5_includedir}/QtXkbCommonSupport/%{so_version}
%files devel
%license LICENSE.*
@ -1302,8 +1315,8 @@ chmod 644 %{buildroot}%{libqt5_docdir}/global/template/images/*.png
%files -n libQt5PlatformSupport-devel-static
%license LICENSE.*
%doc *.txt
%{libqt5_libdir}/libQt5XcbQpa.so
%{libqt5_libdir}/libQt5XcbQpa.prl
%{libqt5_libdir}/libQt5XkbCommonSupport.a
%{libqt5_libdir}/libQt5XkbCommonSupport.prl
%{libqt5_libdir}/libQt5AccessibilitySupport.a
%{libqt5_libdir}/libQt5AccessibilitySupport.prl
%{libqt5_libdir}/libQt5DeviceDiscoverySupport.a
@ -1396,6 +1409,7 @@ chmod 644 %{buildroot}%{libqt5_docdir}/global/template/images/*.png
%doc *.txt
%{libqt5_includedir}/QtGui/%{so_version}/
%{libqt5_includedir}/QtEglFSDeviceIntegration/%{so_version}
%{libqt5_includedir}/QtXkbCommonSupport/%{so_version}
%files -n libQt5KmsSupport-private-headers-devel
%license LICENSE.*

View File

@ -1,31 +0,0 @@
From edc101a8d8adf29dc62dd5b64becaef972a45830 Mon Sep 17 00:00:00 2001
From: Kai Uwe Broulik <kde@privat.broulik.de>
Date: Mon, 9 Jan 2017 15:17:54 +0100
Subject: [PATCH] QApplication: Emit paletteChanged signal
This signal was added to QGuiApplication and QGuiApplication::setPalette.
Since this function is static QApplication has its own distinct implementation
which never emitted this signal. This results in items, such as QtQuick
SystemPalette, which listen to paletteChanged to not update when using
a QApplication.
Change-Id: I2b8108693743ec57934391025424ec9fee1c9c21
---
src/widgets/kernel/qapplication.cpp | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/widgets/kernel/qapplication.cpp b/src/widgets/kernel/qapplication.cpp
index ef046f3e..045d3f7 100644
--- a/src/widgets/kernel/qapplication.cpp
+++ b/src/widgets/kernel/qapplication.cpp
@@ -1514,6 +1514,7 @@ void QApplicationPrivate::setPalette_helper(const QPalette &palette, const char*
else
*QApplicationPrivate::set_pal = palette;
QCoreApplication::setAttribute(Qt::AA_SetPalette);
+ emit qApp->paletteChanged(*QApplicationPrivate::set_pal);
}
}
--
2.7.4

View File

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

View File

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

View File

@ -1,26 +0,0 @@
commit aa0241031c93086737d82d5c3e917a8816a77fc4
Author: Bernhard M. Wiedemann <bwiedemann@suse.de>
Date: Wed Jul 11 10:05:55 2018 +0200
Use SOURCE_DATE_EPOCH
Use the standard variable name in addition to the QT-specific one
to make builds reproducible out-of-the-box
Change-Id: I401a2a9d258e751b83ae7b83f4100d9088b9ad71
diff --git a/src/tools/rcc/rcc.cpp b/src/tools/rcc/rcc.cpp
index 1a7cab01df..26fc3efea2 100644
--- a/src/tools/rcc/rcc.cpp
+++ b/src/tools/rcc/rcc.cpp
@@ -211,6 +211,9 @@ void RCCFileInfo::writeDataInfo(RCCResourceLibrary &lib)
static const quint64 sourceDate = 1000 * qgetenv("QT_RCC_SOURCE_DATE_OVERRIDE").toULongLong();
if (sourceDate != 0)
lastmod = sourceDate;
+ static const quint64 sourceDate2 = 1000 * qgetenv("SOURCE_DATE_EPOCH").toULongLong();
+ if (sourceDate2 != 0)
+ lastmod = sourceDate2;
lib.writeNumber8(lastmod);
if (text || pass1)
lib.writeChar('\n');