summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2018-04-11 12:20:40 +0200
committerQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2018-04-11 12:20:41 +0200
commitf2095f2c66d0dae8525879f6c14165ace650e7f1 (patch)
tree041a058747623112a9a7365403dd008b72b80b6f
parentb50b654ba4c1c2a59ae80420ed77e09d1080707b (diff)
parentf4c2fcc052e5c27e8765e68216f02e1e1915e5bc (diff)
Merge remote-tracking branch 'origin/5.9.5' into 5.9
-rw-r--r--dist/changes-5.9.5122
-rw-r--r--src/widgets/kernel/qwidget.cpp4
-rw-r--r--src/widgets/styles/qfusionstyle.cpp8
-rw-r--r--src/widgets/widgets/qlabel.cpp2
-rw-r--r--tests/auto/widgets/effects/qgraphicseffect/tst_qgraphicseffect.cpp21
5 files changed, 130 insertions, 27 deletions
diff --git a/dist/changes-5.9.5 b/dist/changes-5.9.5
new file mode 100644
index 0000000000..a71b09bf90
--- /dev/null
+++ b/dist/changes-5.9.5
@@ -0,0 +1,122 @@
+Qt 5.9.5 is a bug-fix release. It maintains both forward and backward
+compatibility (source and binary) with Qt 5.9.0 through 5.9.4.
+
+For more details, refer to the online documentation included in this
+distribution. The documentation is also available online:
+
+http://doc.qt.io/qt-5/index.html
+
+The Qt version 5.9 series is binary compatible with the 5.8.x series.
+Applications compiled for 5.8 will continue to run with 5.9.
+
+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.
+
+****************************************************************************
+* Qt 5.9.5 Changes *
+****************************************************************************
+
+QtCore
+------
+
+ - QDateTime and QLocale:
+ * [QTBUG-66076] Fixed a crash if the date/time parsed with Qt::ISODate and
+ Qt::ISODateWithMS had a 'T' for the time, but no actual time.
+
+ - QObject:
+ * [QTBUG-65712] Improved performance of QObject::deleteLater.
+
+ - QPluginLoader:
+ * [QTBUG-65197] Fixed a bug that would cause the Qt plugin scanning
+ system to allocate too much memory and possibly crash the process.
+
+ - QStandardPaths:
+ * [QTBUG-65687] Fixed a memory leak with displayName() on Apple platforms.
+ * [QTBUG-65820] Fixed QStandardPaths::AppDataLocation on Android.
+
+QtGui
+-----
+
+ - Text:
+ * [QTBUG-61882] Fixed a bug where mixing different writing systems with
+ emojis could lead to missing glyphs.
+ * [QTBUG-65519] Fixed ZWJ and ZWNJ control characters when fallback
+ fonts are in use.
+
+QtWidgets
+---------
+
+ - QTreeView:
+ * [QTBUG-65980] Fixed missing update of QTreeView on changing tree
+ position.
+
+ - QLabel:
+ * [QTBUG-66841] Fixed crash related to deleted buddy.
+
+ - QHeaderView:
+ * [QTBUG-65478] Fixed crash that could happen during layout.
+ * [QTBUG-66444][QTBUG-65478][QTBUG-65478] Fixed section resize settings
+ getting lost after layouting.
+ * [QTBUG-66413][QTBUG-65478] Fixed hidden section issues during layout.
+ * [QTBUG-65478] Fixed section restore issues after a layout change.
+
+ - QFusionStyle:
+ * [QTBUG-66343] Fixed checkbox rendering regression in low DPI settings.
+
+ - QComboBox:
+ * [QTBUG-55251] Fixed context menu opening up at the wrong location.
+
+ - QFileDialog:
+ * Fixed regression when using QFileDialog::getOpenFileUrl() using
+ remote URLs.
+
+ - QWidget:
+ * [QTBUG-65783] Fixed crash when platform window creation fails.
+
+Third-Party Code
+----------------
+
+ - Documented use of "Unicode Character Database (UCD)" in Qt Core.
+ - Clarified use of "Unicode Common Local Data Repository (CLDR)" in the
+ documentation. Also updated SPDX license name / ID.
+
+Platform-specific changes
+-------------------------
+
+ - Android:
+ * [QTBUG-65863] Fixed the detection of which thread is the main thread on
+ Android.
+
+ - Windows:
+ * Named pipes internally created by QProcess now contain the PID in their
+ name to ensure uniqueness.
+
+ - winrt:
+ * -qdevel and -qdebug are removed from the command line arguments and
+ not passed to the application.
+
+****************************************************************************
+* Tools *
+****************************************************************************
+
+configure & build system
+------------------------
+
+ - [QTBUG-65753] Fixed installation of example sources for qrc/rc files.
+ - [Windows] cl.exe is now preferred over clang-cl.exe again.
+
+qmake
+-----
+
+ - [QTBUG-50839][Windows] Paths starting with a (back-)slash but without
+ a drive letter are not considered absolute any more.
+ - [QTBUG-63637][MinGW] Fixed cross-compilation from Linux.
+ - [QTBUG-65106] Fixed complaints about missing modules in $$QT after the
+ project has already failed requires() (or REQUIRES=).
+ - [QTBUG-65477][Darwin] Bundle identifiers are now properly escaped.
+ - [Windows] Fixed 'make check' for executables in subdirectories.
diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp
index 1fea3836ec..0298359389 100644
--- a/src/widgets/kernel/qwidget.cpp
+++ b/src/widgets/kernel/qwidget.cpp
@@ -5520,11 +5520,11 @@ void QWidgetPrivate::drawWidget(QPaintDevice *pdev, const QRegion &rgn, const QP
setSystemClip(pdev, rgn.translated(offset));
QPainter p(pdev);
p.translate(offset);
- context.painter = context.sharedPainter = &p;
+ context.painter = &p;
graphicsEffect->draw(&p);
setSystemClip(pdev, QRegion());
} else {
- context.painter = context.sharedPainter = sharedPainter;
+ context.painter = sharedPainter;
if (sharedPainter->worldTransform() != sourced->lastEffectTransform) {
sourced->invalidateCache();
sourced->lastEffectTransform = sharedPainter->worldTransform();
diff --git a/src/widgets/styles/qfusionstyle.cpp b/src/widgets/styles/qfusionstyle.cpp
index 82228af4c6..4ccca93e01 100644
--- a/src/widgets/styles/qfusionstyle.cpp
+++ b/src/widgets/styles/qfusionstyle.cpp
@@ -801,8 +801,8 @@ void QFusionStyle::drawPrimitive(PrimitiveElement elem,
} else if (checkbox->state & State_On) {
qreal penWidth = QStyleHelper::dpiScaled(1.5);
- penWidth = qMax(penWidth , 0.13 * rect.height());
- penWidth = qMin(penWidth , 0.20 * rect.height());
+ penWidth = qMax<qreal>(penWidth, 0.13 * rect.height());
+ penWidth = qMin<qreal>(penWidth, 0.20 * rect.height());
QPen checkPen = QPen(checkMarkColor, penWidth);
checkMarkColor.setAlpha(210);
painter->translate(dpiScaled(-0.8), dpiScaled(0.5));
@@ -1584,8 +1584,8 @@ void QFusionStyle::drawControl(ControlElement element, const QStyleOption *optio
bool ignoreCheckMark = false;
const int checkColHOffset = windowsItemHMargin + windowsItemFrame - 1;
- int checkcol = qMax(menuItem->rect.height() * 0.79,
- qMax(menuItem->maxIconWidth * 1.0, dpiScaled(21))); // icon checkbox's highlihgt column width
+ int checkcol = qMax<int>(menuItem->rect.height() * 0.79,
+ qMax<int>(menuItem->maxIconWidth, dpiScaled(21))); // icon checkbox's highlight column width
if (
#if QT_CONFIG(combobox)
qobject_cast<const QComboBox*>(widget) ||
diff --git a/src/widgets/widgets/qlabel.cpp b/src/widgets/widgets/qlabel.cpp
index e3225800cc..46afac700a 100644
--- a/src/widgets/widgets/qlabel.cpp
+++ b/src/widgets/widgets/qlabel.cpp
@@ -964,6 +964,8 @@ bool QLabel::event(QEvent *e)
QShortcutEvent *se = static_cast<QShortcutEvent *>(e);
if (se->shortcutId() == d->shortcutId) {
QWidget * w = d->buddy;
+ if (!w)
+ return QFrame::event(e);
if (w->focusPolicy() != Qt::NoFocus)
w->setFocus(Qt::ShortcutFocusReason);
#if QT_CONFIG(abstractbutton)
diff --git a/tests/auto/widgets/effects/qgraphicseffect/tst_qgraphicseffect.cpp b/tests/auto/widgets/effects/qgraphicseffect/tst_qgraphicseffect.cpp
index dfe5baba71..a1cb729849 100644
--- a/tests/auto/widgets/effects/qgraphicseffect/tst_qgraphicseffect.cpp
+++ b/tests/auto/widgets/effects/qgraphicseffect/tst_qgraphicseffect.cpp
@@ -52,7 +52,6 @@ private slots:
void boundingRect2();
void draw();
void opacity();
- void nestedOpaqueOpacity();
void grayscale();
void colorize();
void drawPixmapItem();
@@ -408,26 +407,6 @@ void tst_QGraphicsEffect::opacity()
QCOMPARE(effect->m_opacity, qreal(0.5));
}
-void tst_QGraphicsEffect::nestedOpaqueOpacity()
-{
- // QTBUG-60231: Nesting widgets with a QGraphicsEffect on a toplevel with
- // QGraphicsOpacityEffect caused crashes due to constructing several
- // QPainter instances on a device in the fast path for
- // QGraphicsOpacityEffect::opacity=1
- QWidget topLevel;
- topLevel.setWindowTitle(QTest::currentTestFunction());
- topLevel.resize(320, 200);
- QGraphicsOpacityEffect *opacityEffect = new QGraphicsOpacityEffect;
- opacityEffect->setOpacity(1);
- topLevel.setGraphicsEffect(opacityEffect);
- QWidget *child = new QWidget(&topLevel);
- child->resize(topLevel.size() / 2);
- QGraphicsDropShadowEffect *childEffect = new QGraphicsDropShadowEffect;
- child->setGraphicsEffect(childEffect);
- topLevel.show();
- QVERIFY(QTest::qWaitForWindowExposed(&topLevel));
-}
-
void tst_QGraphicsEffect::grayscale()
{
if (qApp->desktop()->depth() < 24)