From fdfb34c84ba01114d34259cd88a2b84fa22eb610 Mon Sep 17 00:00:00 2001 From: Simon Hausmann Date: Thu, 9 Nov 2017 10:43:42 +0100 Subject: Improve encapsulation of the the IR de-serialization from QtQuick Compiler The code used by QQC to deserialize the IR requires setting the javaScriptCompilationUnit member in order to connect the generated C++ code. Knowledge of the QmlIR::Document data structure layout on the side of the generated code (thus application) has its downsides though (see referenced bug). We can avoid that dependency easily by doing the entire de-serialization on the QtQml library side. The old "API" (load member function) is still around until the qqc change is also in. Task-number: QTBUG-63474 Change-Id: I239838afacc71474c86114b5b05679ff36e4c2e2 Reviewed-by: Lars Knoll --- src/qml/qml/qqmltypeloader.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/qml/qml/qqmltypeloader.cpp b/src/qml/qml/qqmltypeloader.cpp index d9d7c19312..842cf74887 100644 --- a/src/qml/qml/qqmltypeloader.cpp +++ b/src/qml/qml/qqmltypeloader.cpp @@ -2409,7 +2409,15 @@ void QQmlTypeData::dataReceived(const SourceCodeData &data) void QQmlTypeData::initializeFromCachedUnit(const QQmlPrivate::CachedQmlUnit *unit) { m_document.reset(new QmlIR::Document(isDebugging())); - unit->loadIR(m_document.data(), unit); + if (unit->loadIR) { + // old code path for older generated code + unit->loadIR(m_document.data(), unit); + } else { + // new code path + QmlIR::IRLoader loader(unit->qmlData, m_document.data()); + loader.load(); + m_document->javaScriptCompilationUnit.adopt(unit->createCompilationUnit()); + } continueLoadFromIR(); } -- cgit v1.2.3 From 706ea1f63ede8e84e4ccc70baa0c93b493c1badf Mon Sep 17 00:00:00 2001 From: Jani Heikkinen Date: Thu, 2 Nov 2017 08:52:59 +0200 Subject: Add changes file for Qt 5.9.3 Task-number: QTBUG-64181 Change-Id: I85a6150e00143b379143c353a37e844cb9708627 Reviewed-by: Shawn Rutledge Reviewed-by: Simon Hausmann --- dist/changes-5.9.3 | 73 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 dist/changes-5.9.3 diff --git a/dist/changes-5.9.3 b/dist/changes-5.9.3 new file mode 100644 index 0000000000..825941df23 --- /dev/null +++ b/dist/changes-5.9.3 @@ -0,0 +1,73 @@ +Qt 5.9.3 is a bug-fix release. It maintains both forward and backward +compatibility (source and binary) with Qt 5.9.0. + +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.3 Changes * +**************************************************************************** + +QtQml +----- + + - [QTBUG-63464] Fix Number.isNaN() returning incorrect values with some + glibc versions. + - [QTBUG-52515] Qt.platform.os returns "qnx" when running on QNX + platforms. + - [QTBUG-63200] Deferred property assignments in inner contexts are now + executed properly + - [QTBUG-63733] Fixed a crash during object deletion due to a dangling + pointer + - [QTBUG-64017] Fixed a circular dependency problem which caused a + failure when using QML singletons + +QtQuick +------- + + - Global: + * [QTBUG-61679] Input method events now work in QQuickWidget + * Loader and Flickable use setSize() to resize the inner Item in one + transaction rather than setting width and height separately. + This makes the state consistent by the time the change signals are emitted. + * Optimized rendering of opaque pixmaps, 9-patches and layers in the + software renderer + * [QTBUG-61434] Fixed a crash on exit by ensuring that a PointerEvent + instance is created only in response to an actual incoming event, + not because of checking the mouseGrabberItem at shutdown, and by + explicitly destroying the instances at the right time. + + - QQuickWidget: + * [QTBUG-61798] QQuickWidget is repainted properly when moving between + screens + * [QTBUG-45557] Mouse enter and leave events are now correctly forwarded + to MouseAreas inside a QQuickWidget + + - Item Views: + * [QTBUG-62607] Fixed a crash and a memory leak related to moving Items + in Item Views + * [QTBUG-57225][QTBUG-57225] GridView's removeDisplaced animation + occurs reliably and at the right time + * [QTBUG-61269][QTBUG-62864] Changes in a ListView's model no longer + disrupt the movement of an animated highlight item + * [QTBUG-34576] ListView's calculated velocity remains correct during + index-based scrolling + * [QTBUG-63974] ListView.positionViewAtIndex now works correctly + in the presence of sticky headers and footers + + - Platform Specific Changes: + * [QTBUG-63835] iOS selection handles are shown properly when selecting + all text in a TextEdit -- cgit v1.2.3 From 19f02c691f790e2b38a23a3955590383425784e7 Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Thu, 9 Nov 2017 13:01:08 +0100 Subject: Blacklist tst_qquickwidget::enterLeave() on Mac Task-number: QTBUG-64397 (cherry picked from commit 5f16aa795d39969d93b520861a1e86729c7db90e) Change-Id: I28268ea87b81dd1f7dbf8bb5a8eb421962cc5f31 Reviewed-by: Jani Heikkinen --- tests/auto/quickwidgets/qquickwidget/BLACKLIST | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 tests/auto/quickwidgets/qquickwidget/BLACKLIST diff --git a/tests/auto/quickwidgets/qquickwidget/BLACKLIST b/tests/auto/quickwidgets/qquickwidget/BLACKLIST new file mode 100644 index 0000000000..6594a22472 --- /dev/null +++ b/tests/auto/quickwidgets/qquickwidget/BLACKLIST @@ -0,0 +1,2 @@ +[enterLeave] +osx -- cgit v1.2.3 From d188cdd7378e0e8b384fa812b5907638075d1206 Mon Sep 17 00:00:00 2001 From: Andy Shaw Date: Mon, 13 Nov 2017 13:56:09 +0100 Subject: Fix crash with dangling context object pointers This is a regression introduced by commit e22b624d9ab1f36021adb9cdbfa9b37054282bb8, where the object that owns the QML context would destroy the context upon destruction. Now the context may live longer and thus the context->contextObject pointer would become a dangling pointer. Task-number: QTBUG-64166 Change-Id: I1df631fa11187abdeff735d8891ad7907e8d4a3d Reviewed-by: Lars Knoll --- src/qml/types/qqmldelegatemodel.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/qml/types/qqmldelegatemodel.cpp b/src/qml/types/qqmldelegatemodel.cpp index 26e6a81418..e3906f2a7e 100644 --- a/src/qml/types/qqmldelegatemodel.cpp +++ b/src/qml/types/qqmldelegatemodel.cpp @@ -1979,6 +1979,8 @@ void QQmlDelegateModelItem::destroyObject() Q_ASSERT(data); if (data->ownContext) { data->ownContext->clearContext(); + if (data->ownContext->contextObject == object) + data->ownContext->contextObject = nullptr; data->ownContext = 0; data->context = 0; } -- cgit v1.2.3 From 08778586413adad7b3af35c7cb97416757d599c0 Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Thu, 16 Nov 2017 17:41:44 +0100 Subject: Fix crash when accessing pixmap on default QSGSoftwareInternalImageNode MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Task-number: QTBUG-64562 Change-Id: I52e07b0d8b7a5d1cc960431dcbd1a90dd3e7e518 Reviewed-by: Jüri Valdmann Reviewed-by: Laszlo Agocs --- .../adaptations/software/qsgsoftwareinternalimagenode.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/quick/scenegraph/adaptations/software/qsgsoftwareinternalimagenode.cpp b/src/quick/scenegraph/adaptations/software/qsgsoftwareinternalimagenode.cpp index 10291b9cb5..8843b6450a 100644 --- a/src/quick/scenegraph/adaptations/software/qsgsoftwareinternalimagenode.cpp +++ b/src/quick/scenegraph/adaptations/software/qsgsoftwareinternalimagenode.cpp @@ -490,12 +490,13 @@ QRectF QSGSoftwareInternalImageNode::rect() const const QPixmap &QSGSoftwareInternalImageNode::pixmap() const { - if (QSGSoftwarePixmapTexture *pt = qobject_cast(m_texture)) { + if (QSGSoftwarePixmapTexture *pt = qobject_cast(m_texture)) return pt->pixmap(); - } else { - QSGSoftwareLayer *layer = qobject_cast(m_texture); + if (QSGSoftwareLayer *layer = qobject_cast(m_texture)) return layer->pixmap(); - } + Q_ASSERT(m_texture == 0); + static const QPixmap nullPixmap; + return nullPixmap; } QT_END_NAMESPACE -- cgit v1.2.3