summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2019-09-05 13:33:00 +0200
committerQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2019-09-05 13:33:00 +0200
commitfa2589bbb57eef49e11542211652d85d2e55424a (patch)
tree4c3ea1f90cbe718ce6e6564d119899c2e345bffa
parent651dd26403052f98397783927ad02e008acf0552 (diff)
parentaf6ac444c97ed2dc234f93fe457440c9da5482ea (diff)
Merge remote-tracking branch 'origin/5.13.1' into 5.13
-rw-r--r--dist/changes-5.13.1141
-rw-r--r--doc/doc.pro4
-rw-r--r--qmake/generators/mac/pbuilder_pbx.cpp5
-rw-r--r--qmake/generators/unix/unixmake2.cpp6
-rw-r--r--src/corelib/plugin/qlibrary.cpp2
-rw-r--r--src/gui/text/qtextengine.cpp15
-rw-r--r--tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp17
7 files changed, 177 insertions, 13 deletions
diff --git a/dist/changes-5.13.1 b/dist/changes-5.13.1
new file mode 100644
index 0000000000..2021b959aa
--- /dev/null
+++ b/dist/changes-5.13.1
@@ -0,0 +1,141 @@
+Qt 5.13.1 is a bug-fix release. It maintains both forward and backward
+compatibility (source and binary) with Qt 5.13.0.
+
+For more details, refer to the online documentation included in this
+distribution. The documentation is also available online:
+
+https://doc.qt.io/qt-5/index.html
+
+The Qt version 5.13 series is binary compatible with the 5.12.x series.
+Applications compiled for 5.12 will continue to run with 5.13.
+
+Some of the changes listed in this file include issue tracking numbers
+corresponding to tasks in the Qt Bug Tracker:
+
+https://bugreports.qt.io/
+
+Each of these identifiers can be entered in the bug tracker to obtain more
+information about a particular change.
+
+****************************************************************************
+* Important Behavior Changes *
+****************************************************************************
+
+ - [QTBUG-76521] RCC's default compression algorithm was changed back to
+ Zlib, as it was in all previous releases until 5.13.0. The default will
+ remain Zlib for all Qt 5.x releases but will change in Qt 6.0. To
+ activate Zstd compression for your resources, either pass the
+ --compress-algo=zstd option to the rcc tool or add the XML attribute
+ compression-algorithm="zstd" to the <file> tags in the .qrc file.
+
+****************************************************************************
+* Android *
+****************************************************************************
+
+ - [QTBUG-76293] Fix NDK r20 linking.
+
+****************************************************************************
+* QtCore *
+****************************************************************************
+
+ - Global:
+ * [QTBUG-72073] Added the QT_NO_FLOAT16_OPERATORS macro in order to work
+ around a Microsoft <= VS2017 compiler bug that is exposed when using
+ std::bitset along with any Qt header that includes <qfloat16.h>.
+
+ - QCborStreamReader:
+ * Fixed a bug that caused the QIODevice that the data was being read
+ from not to show the entire CBOR message as consumed. This allows the
+ user to consume data that may follow the CBOR payload.
+
+ - QDeadlineTimer:
+ * [QTBUG-69750] Fixed integer overflows leading to immediate timeouts.
+
+ - QStorageInfo:
+ * Fixed a bug that caused QStorageInfo to be unable to report all
+ filesystems if the options to mounted filesystems were too long (over
+ 900 characters, roughly), such as those found in Docker overlay
+ mounts.
+
+ - QTextBoundaryFinder:
+ * Sentence breaking now no longer breaks between uppercase letters and
+ comma. This is a deviation from the Unicode specification, but
+ produces less surprising behavior.
+
+ - QTimeZone:
+ * The IANA timezone database backend now properly follows symlinks even
+ when they point to variable locations like /run or /var (useful when
+ /etc is mounted read-only).
+
+ - QVector:
+ * Fixed a regression that caused fill() not to detach, corrupting shared
+ copies.
+
+****************************************************************************
+* QtNetwork *
+****************************************************************************
+
+ - Windows:
+ * Correctly emit errors when trying to reach unreachable hosts or
+ services
+
+ - QNetworkAccessManager:
+ * Fixed QNetworkAccessManager::sendCustomRequest for Qt For WebAssembly.
+
+****************************************************************************
+* QtGui *
+****************************************************************************
+
+ - [QTBUG-73231] QWindow::mapToGlobal()/mapFromGlobal() now handle windows
+ spanning screens correctly.
+
+ - QImage:
+ * Improve loading time when loading png files that have the same size as
+ the target.
+
+ - QPixmapCache:
+ * [QTBUG-76694][QTBUG-72523] Ignore unsafe access from non-main threads
+
+ - Text:
+ * [QTBUG-76219] Fixed a bug which could cause the font cache to grow
+ larger than it was supposed to.
+ * [QTBUG-55096][QTBUG-74761] Fixed bug where regular text rendered with
+ a color font would always display in black.
+
+****************************************************************************
+* QtWidgets *
+****************************************************************************
+
+ - QSystemTrayIcon:
+ * On macOS, show the icon passed into showMessage in the notification
+ popup
+
+ - QDateTimeEdit:
+ * Use the information provided by the locale to determine the AM/PM
+ strings, unless they are already translated.
+
+ - QGraphicsView:
+ * Ignore disabled items when setting the mouse cursor.
+
+ - QMenu:
+ * Shortcuts are again shown by default in context menus, except on
+ macOS. They can be forced off by setting
+ AA_DontShowShortcutsInContextMenus to true.
+
+ - QSplashScreen:
+ * On macOS, lower the splash screen when a modal dialog is shown to make
+ sure the user sees the dialog.
+
+****************************************************************************
+* Third-Party Code *
+****************************************************************************
+
+ - Updated bundled SQLite to version 3.28.0
+ - Updated QLocale's data to CLDR v35.1
+
+****************************************************************************
+* qmake *
+****************************************************************************
+
+ - [QTBUG-75653] The CONFIG value c++latest was added to select the latest
+ C++ standard the currently used toolchain supports.
diff --git a/doc/doc.pro b/doc/doc.pro
index 41ceb7ceae..802bd12222 100644
--- a/doc/doc.pro
+++ b/doc/doc.pro
@@ -1,6 +1,8 @@
TEMPLATE = aux
-global_docs.files = $$PWD/global
+global_docs.files = \
+ $$PWD/global \
+ $$PWD/config
global_docs.path = $$[QT_INSTALL_DOCS]
INSTALLS += global_docs
!prefix_build:!equals(OUT_PWD, $$PWD): \
diff --git a/qmake/generators/mac/pbuilder_pbx.cpp b/qmake/generators/mac/pbuilder_pbx.cpp
index d5994639b3..1b2c68e430 100644
--- a/qmake/generators/mac/pbuilder_pbx.cpp
+++ b/qmake/generators/mac/pbuilder_pbx.cpp
@@ -825,6 +825,7 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t)
}
if(!project->isActiveConfig("staticlib")) { //DUMP LIBRARIES
+ const ProStringList defaultLibDirs = project->values("QMAKE_DEFAULT_LIBDIRS");
ProStringList &libdirs = project->values("QMAKE_PBX_LIBPATHS"),
&frameworkdirs = project->values("QMAKE_FRAMEWORKPATH");
static const char * const libs[] = { "LIBS", "LIBS_PRIVATE",
@@ -943,8 +944,10 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t)
}
if(slsh != -1) {
const QString path = QFileInfo(library.left(slsh)).absoluteFilePath();
- if(!path.isEmpty() && !libdirs.contains(path))
+ if (!path.isEmpty() && !libdirs.contains(path)
+ && !defaultLibDirs.contains(path)) {
libdirs += path;
+ }
}
library = fileFixify(library, FileFixifyFromOutdir | FileFixifyAbsolute);
QString key = keyFor(library);
diff --git a/qmake/generators/unix/unixmake2.cpp b/qmake/generators/unix/unixmake2.cpp
index c326692ded..9888b4816a 100644
--- a/qmake/generators/unix/unixmake2.cpp
+++ b/qmake/generators/unix/unixmake2.cpp
@@ -1206,8 +1206,10 @@ void UnixMakefileGenerator::init2()
project->values("QMAKE_FRAMEWORK_VERSION").append(project->first("VER_MAJ"));
if (project->first("TEMPLATE") == "aux") {
- project->values("PRL_TARGET") =
- project->values("TARGET").first().prepend(project->first("QMAKE_PREFIX_STATICLIB"));
+ project->values("PRL_TARGET") = {
+ project->first("QMAKE_PREFIX_STATICLIB") +
+ project->first("TARGET")
+ };
} else if (!project->values("QMAKE_APP_FLAG").isEmpty()) {
if(!project->isEmpty("QMAKE_BUNDLE")) {
ProString bundle_loc = project->first("QMAKE_BUNDLE_LOCATION");
diff --git a/src/corelib/plugin/qlibrary.cpp b/src/corelib/plugin/qlibrary.cpp
index 3aadd1a73b..0e32776c71 100644
--- a/src/corelib/plugin/qlibrary.cpp
+++ b/src/corelib/plugin/qlibrary.cpp
@@ -74,7 +74,7 @@ QT_BEGIN_NAMESPACE
# define QLIBRARY_AS_DEBUG true
#endif
-#if defined(Q_OS_UNIX) || defined(Q_CC_MINGW)
+#if defined(Q_OS_UNIX)
// We don't use separate debug and release libs on UNIX, so we want
// to allow loading plugins, regardless of how they were built.
# define QT_NO_DEBUG_PLUGIN_CHECK
diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp
index 2da13289bf..a7834587b1 100644
--- a/src/gui/text/qtextengine.cpp
+++ b/src/gui/text/qtextengine.cpp
@@ -399,6 +399,7 @@ struct QBidiAlgorithm {
analysis[i].bidiDirection = (level & 1) ? QChar::DirR : QChar::DirL;
runHasContent = true;
lastRunWithContent = -1;
+ ++isolatePairPosition;
}
int runBeforeIsolate = runs.size();
ushort newLevel = isRtl ? ((stack.top().level + 1) | 1) : ((stack.top().level + 2) & ~1);
@@ -440,21 +441,19 @@ struct QBidiAlgorithm {
doEmbed(true, true, false);
break;
case QChar::DirLRI:
- Q_ASSERT(isolatePairs.at(isolatePairPosition).start == i);
doEmbed(false, false, true);
- ++isolatePairPosition;
break;
case QChar::DirRLI:
- Q_ASSERT(isolatePairs.at(isolatePairPosition).start == i);
doEmbed(true, false, true);
- ++isolatePairPosition;
break;
case QChar::DirFSI: {
- const auto &pair = isolatePairs.at(isolatePairPosition);
- Q_ASSERT(pair.start == i);
- bool isRtl = QStringView(text + pair.start + 1, pair.end - pair.start - 1).isRightToLeft();
+ bool isRtl = false;
+ if (isolatePairPosition < isolatePairs.size()) {
+ const auto &pair = isolatePairs.at(isolatePairPosition);
+ Q_ASSERT(pair.start == i);
+ isRtl = QStringView(text + pair.start + 1, pair.end - pair.start - 1).isRightToLeft();
+ }
doEmbed(isRtl, false, true);
- ++isolatePairPosition;
break;
}
diff --git a/tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp b/tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp
index 9c477589f9..f0a32c2ed4 100644
--- a/tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp
+++ b/tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp
@@ -138,6 +138,7 @@ private slots:
void noModificationOfInputString();
void superscriptCrash_qtbug53911();
void showLineAndParagraphSeparatorsCrash();
+ void tooManyDirectionalCharctersCrash_qtbug77819();
private:
QFont testFont;
@@ -2309,5 +2310,21 @@ void tst_QTextLayout::nbspWithFormat()
QCOMPARE(layout.lineAt(1).textLength(), s2.length() + 1 + s3.length());
}
+void tst_QTextLayout::tooManyDirectionalCharctersCrash_qtbug77819()
+{
+ QString data;
+ data += QString::fromUtf8("\xe2\x81\xa8"); // U+2068 FSI character
+ data += QString::fromUtf8("\xe2\x81\xa7"); // U+2067 RLI character
+
+ // duplicating the text
+ for (int i = 0; i < 10; i++)
+ data += data;
+
+ // Nothing to test. It must not crash in beginLayout().
+ QTextLayout tl(data);
+ tl.beginLayout();
+ tl.endLayout();
+}
+
QTEST_MAIN(tst_QTextLayout)
#include "tst_qtextlayout.moc"