aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Add changes file for Qt 5.9.9v5.9.95.9Antti Kokko2019-12-031-0/+20
| | | | | | | + 0e65d4f97eb2c0404459d79d326628d43c0bbc71 Bump version Change-Id: If58219be3ea1f58d3c8f87d5b7389eeb61afe6f5 Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io>
* Bump versionFrederik Gladhorn2019-05-231-1/+1
| | | | Change-Id: I45bd34a11cd25a5d6e1778ae43ef37a487733896
* Merge remote-tracking branch 'origin/5.9.8' into 5.9Qt Forward Merge Bot2019-04-252-1/+33
|\ | | | | | | Change-Id: I5be12e0e63c3264d578a69a4a8c0c3fbf66d0efd
| * Add changes file for Qt 5.9.8v5.9.8Antti Kokko2019-04-021-0/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + 2ededacdde179357eb686901202789bbee35771a Fix crash in QQuickAnimatorProxyJob::sceneGraphInitialized() + f12e6003831b8aedac99e89b38665da64d0804ca Bump version + 3793a264b6eeecae5d4c44747fbe46c0d255a3c5 Silence a GCC 8 warning in qv4string + 89cdd5575bba856035946926f5575705ebd6c1b7 Silence a GCC 8 warning in qqmljsparser + cbb11c57773713ca18384a6c45e5dcd96330850a Silence a GCC 8 warning in qv4engine + 10bef7aa883cab99cfcb526d6f996f033b3f1fc0 Silence a GCC 8 warning in qquickanimation + 6626572f8604b2789da9253ccd7aa92d3f6013e9 Silence GCC 8 warnings in qpodvector + 93c3844a84f0acd382be5021d2ebe896269b7277 Silence another GCC 8 warning in qpodvector + 24af53cfeb998dcf3a6c6d49d312e50809a4a324 V4 Date: fix what we can within ECMA 262's limitations Change-Id: Idc45484077f4dddca3111defb8e0b787fef0334a Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
| * Use Los Angeles to represent PST8PDT, not VancouverEdward Welbourne2019-04-021-1/+1
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | This amends commit 24af53cfeb998dcf3a6c6d49d312e50809a4a324. The very last test (15.9.5.43-0-8) in the ES test-suite relies on constructing a time *just* outside the valid range, to provoke (and check it gets) a RangeError. However, it uses the current time-zone offset in computing this; and the local time -> UTC conversion in the Date constructor uses the zone information for the zone at the given time. The TZ db uses each zone's local mean solar time for the period before a formal zone was introduced; and Vancouver is further West than the nominal meridian for its zone. The test code throws in an hour's correction in case it's run in daylight-saving time, which would put the test time, when run during standard time, an hour (and a millisecond, rather than just the millisecond) outside the valid Date range, so as to ensure it's still a ms outside when the test is run during DST. However, the 12m28s mean solar offset overcomes the 1ms and puts the time back in range durign DST (but still 47m32.001s outside during standard time, which is why this problem only surfaced when North America entered summer time). Fortunately, Los Angeles is further East than the meridian in question, and uses the same zone. Task-number: QTBUG-67010 Change-Id: I58fd7bf14366ebe5842b8abd7e6802c9c78ca27e Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> (cherry picked from commit fb20d2f7b149725b0fcc8e5bbb377cd6dababc9b) Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* V4 Date: fix what we can within ECMA 262's limitationsEdward Welbourne2018-12-073-45/+86
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use QDateTime and QTimeZone to simplify code (when we can). Note which defective methods are so because the ECMAScript spec requires those defects, reference my bug report against those defects. Fix currentTime to return a UTC time. Fix getLocalTZA to actually deliver the standard offset, without daylight-saving corrections. Fix DaylightSavingTA(t) to return the difference between current standard time offset and pertinent total offset at time t (explaining why that's the least broken answer), rather than assuming DST is one hour when active. (In some places it's half an hour, in some places two hours; and the bugs in the spec break UTC() and LocalTime() if we only return actual DST offset, without adjusting for historical changes to standard offset.) Fix tests to use actual IANA IDs for zones. Change QTime-to-Time conversion to use a modernish date, for which time-zone data is likely to at least be consistently handled, instead of MakeDay(0, 0, 0); that's (nominal proleptic Gregorian) 2 BC, December 31st (represented denormally) for which any time-zone data we have is artificial and contrived. I chose Cassini's third centennary, as it's not likely to be near any zone transitions and is within the era of sane time-zone data. Task-number: QTBUG-72109 Task-number: QTBUG-56787 Change-Id: I5f21ee2010070a5c1798134fdd2915a723208fd9 Reviewed-by: Lars Knoll <lars.knoll@qt.io> (cherry picked from commit 2b8b7a162be52f8cd6c2bc39f498a1ddfb59dd68) Reviewed-by: Liang Qi <liang.qi@qt.io>
* Silence another GCC 8 warning in qpodvectorVille Voutilainen2018-11-191-1/+1
| | | | | | | | | | qtdeclarative/src/qml/qml/ftw/qpodvector_p.h:119:22: error: ‘void* memmove(void*, const void*, size_t)’ writing to an object of non-trivially copyable type ‘class QQuickBasePositioner::PositionedItem’; use copy-assignment or copy-initialization instead [-Werror=class-memaccess] ::memmove(m_data + idx, m_data + idx + count, Change-Id: I049703a0a6bb4432dfd3d3ce3c8cef13e9c2e31a Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> (cherry picked from commit 55f71cdfc5746a71bcb89f0fa4ff3447cb8b5514) Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
* Silence GCC 8 warnings in qpodvectorVille Voutilainen2018-11-191-4/+4
| | | | | | | | | | | | | qpodvector_p.h:90:34: error: ‘void* realloc(void*, size_t)’ moving an object of non-trivially copyable type ‘class QQuickBasePositioner::PositionedItem’; use ‘new’ and ‘delete’ instead [-Werror=class-memaccess] m_data = (T *)realloc(m_data, m_capacity * sizeof(T)); qpodvector_p.h:94:22: error: ‘void* memmove(void*, const void*, size_t)’ writing to an object of non-trivially copyable type ‘class QQuickBasePositioner::PositionedItem’; use copy-assignment or copy-initialization instead [-Werror=class-memaccess] ::memmove(m_data + idx + 1, m_data + idx, moveCount * sizeof(T)); Change-Id: I37088986a0f8613152a355ed6f3f9572316fa607 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> (cherry picked from commit 622decbe3b2478496295e57d59f9cf16a9f70a13) Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
* Silence a GCC 8 warning in qquickanimationVille Voutilainen2018-11-191-3/+3
| | | | | | | | | | qtdeclarative/src/quick/util/qquickanimation.cpp:1669:109: error: cast between incompatible function types from ‘QVariant (*)(qreal&, qreal&, qreal)’ {aka ‘QVariant (*)(double&, double&, double)’} to ‘QVariantAnimation::Interpolator’ {aka ‘QVariant (*)(const void*, const void*, double)’} [-Werror=cast-function-type] d->interpolator = reinterpret_cast<QVariantAnimation::Interpolator>(&_q_interpolateClockwiseRotation); Change-Id: I8da70ef666deb3cbdbf05c5bac89f705a2ec5ea8 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> (cherry picked from commit 12afec6c2f89264b7344f9221763898c77a396fc) Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
* Silence a GCC 8 warning in qv4engineVille Voutilainen2018-11-191-1/+1
| | | | | | | | | | qtdeclarative/src/qml/jsruntime/qv4engine.cpp:913:78: error: ‘void* memcpy(void*, const void*, size_t)’ writing to an object of type ‘struct QV4::Property’ with no trivial copy-assignment [-Werror=class-memaccess] memcpy(argumentsAccessors, oldAccessors, oldSize*sizeof(Property)); Change-Id: I6e3d6a1a26fda33aa47c315a183edba9dcd0c0b9 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> (cherry picked from commit d0c1b1e8f9dcbde14154029f7df0acc3888f675a) Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
* Silence a GCC 8 warning in qqmljsparserVille Voutilainen2018-11-191-1/+1
| | | | | | | | | | qtdeclarative/src/qml/parser/qqmljsparser.cpp:82:129: error: ‘void* realloc(void*, size_t)’ moving an object of non-trivially copyable type ‘class QStringRef’; use ‘new’ and ‘delete’ instead [-Werror=class-memaccess] string_stack = reinterpret_cast<QStringRef*> (realloc(string_stack, stack_size * sizeof(QStringRef))); Change-Id: I670b8a860bf3dc9c20126306f7848f38acd75ca9 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> (cherry picked from commit 2474eb092aace8f58bd49a61ec712b5ae4dd1245) Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
* Silence a GCC 8 warning in qv4stringVille Voutilainen2018-11-191-1/+1
| | | | | | | | | | qtdeclarative/src/qml/jsruntime/qv4string.cpp:224:76: error: ‘void* memcpy(void*, const void*, size_t)’ copying an object of non-trivial type ‘class QChar’ from an array of ‘short unsigned int’ [-Werror=class-memaccess] memcpy(ch, item->text->data(), item->text->size * sizeof(QChar)); Change-Id: Ibbb91fb017fe3cc382e4a4641f899c8ea4ef989a Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> (cherry picked from commit 27ef77279f0cc563eac58f6ef5ea0f6ac6b570a4) Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
* Merge remote-tracking branch 'origin/5.9.7' into 5.9Qt Forward Merge Bot2018-10-231-0/+30
|\ | | | | | | Change-Id: Ic246342b553bddc3423534e5c0afea61e2d1fe32
| * Add changes file for Qt 5.9.7v5.9.7Antti Kokko2018-10-051-0/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | + b6d78236e1a87c6f2696fc3ea7214459f6da278c Bump version + cb9537d83046dfbfdbe4977999b606fed879d2d7 Fix out of bounds stack access with the byte code interpreter + 75306a2f438e1d2b3969a7a3b7ffd8e39b84cd11 Fix truncating of doubles to integers + b6ce37a9b7c5058a33d05d307d74f35ebbf1b9e7 QQuickPathViewPrivate: fix heap-use-after-free + 239b8f6ee869dbe1f27ec4fa5d5247eff502c47b stabilize and standardize tst_qquickwidget + 67f88f2342427e8ceb50acdd63444eaa527675b9 Doc: Fix broken link targets + 0e38ce39cd63318f2a10239239b173f17725eecf Remove const from QQuickPointerEvent::device property + 3b3e0c4d80090120fb94fcd42221ddd79a8d0933 Doc: Add precision to scene graph description + 5f364acefa3ce8bc770dd4ddb6d962d9f2ecf292 Doc: Extend ItemSelectionModel QML documentation + 8763b916cd8c65f3519814b00b9a2202c74801ad Doc: Use [] instead of new Array() in snippet + b067e607f1cfd5bee94710d6a6a7c2fa048e9b23 Doc: fix QJSEngine code snippet Change-Id: Ifa84661534e603437e6eeba2ee84a34373f5c84f Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* | Bump versionOswald Buddenhagen2018-10-111-1/+1
| | | | | | | | Change-Id: I48d275a68931a6814d74d9db9d1da040cf07ab55
* | Fix crash in QQuickAnimatorProxyJob::sceneGraphInitialized()Andrew Smolko2018-10-081-2/+4
|/ | | | | | | | | Check for null pointer to controller. Fixes: QTBUG-64402 Change-Id: Ic84bdc9c5cde0e65da436e1c85b40eaf6e3ed77a Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> (cherry picked from commit 10095542d16fc9f5b2c585abf72fe00be9debff3)
* Doc: fix QJSEngine code snippetSamuel Gaist2018-08-021-1/+1
| | | | | | | | | | | The code snippet showing how to use QJSValue::call was wrong. This patch corrects that. Change-Id: Ib4c6479f3ef63f4f95af845d0af228d3c71f0731 Reviewed-by: Sze Howe Koh <szehowe.koh@gmail.com> (cherry picked from commit ec2388860141dcde6387f4cba482955de648e5aa) Reviewed-by: Samuel Gaist <samuel.gaist@idiap.ch> Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Doc: Use [] instead of new Array() in snippetPaul Wicking2018-08-011-1/+1
| | | | | | | | | | | This change removes warning about using new Array() as constructor with the snippet in Qt Creator. Task-number: QTBUG-65891 Change-Id: I858601c21d703e4226db4f4c4d9ef52ec6418ed8 Reviewed-by: Nico Vertriest <nico.vertriest@qt.io> Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> (cherry picked from commit a30138cae86268d71415bc88cfba157977f4a442)
* Doc: Extend ItemSelectionModel QML documentationPaul Wicking2018-07-311-4/+59
| | | | | | | | | | This change provides a bare minimum documentation for the ItemSelectionModel QML type. Task-number: QTBUG-58090 Change-Id: I0e232f8e05e7629d6f573f8dce21154d0ec307e5 Reviewed-by: Topi Reiniö <topi.reinio@qt.io> (cherry picked from commit 9ee7b52f3234d12c7617ddf716f54e1923d3cded)
* Doc: Add precision to scene graph descriptionPaul Wicking2018-07-311-4/+4
| | | | | | | | Task-number: QTBUG-60913 Change-Id: I3a9d8925337a12a849e39a70f168dbfc7f007e5f Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> (cherry picked from commit 785451a30921f11a88d45c1f9e1a00f6c7e571d8) Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
* Remove const from QQuickPointerEvent::device propertyShawn Rutledge2018-07-301-1/+1
| | | | | | | | | | A property never has const pointer as its type. Getting this wrong also causes problems with the QML type registration not matching the actual type. Task-number: QTBUG-61749 Change-Id: Ic3c47499cc4dff6df0beecf5b1413c76509ca6f5 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> (cherry picked from commit 1d815780e020a7315dfc4762b6b0280834203e7e)
* Doc: Fix broken link targetsPaul Wicking2018-07-262-5/+6
| | | | | | | | | | * Rename two section titles that caused confusion for the autolinker. * Add see also link to correct location from SpriteSequence QML type. Task-number: QTBUG-58640 Change-Id: I62b941d00198ac56d998ca14b926c7bb37f6c91e Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> (cherry picked from commit afccf3b4654c04c57d4f7e6da09f88e27ffb5a54)
* stabilize and standardize tst_qquickwidgetShawn Rutledge2018-06-262-19/+17
| | | | | | | | | | | | | | | In tst_qquickwidget::enterLeave(), start with the cursor outside the same as we do in QtQuick tests: move the window first, then position the cursor to the right of it and downwards (because the window might not necessarily go where you want it to). Don't hard-code 5000ms timeout on qWaitForWindowExposed(): it's the default anyway. Task-number: QTBUG-64397 Change-Id: I67e4566c2c7f9e361a79e3a091436c3391f39786 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* QQuickPathViewPrivate: fix heap-use-after-freeMitch Curtis2018-06-253-0/+176
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The TabBar auto tests in Qt Quick Controls 2 repeats the following process very quickly for several data rows: 1. Creates a TabBar (PathView, when using the Universal style) 2. Moves items in its QQmlObjectModel 3. Deletes the TabBar When run with ASAN, this test would fail, because the TabButtons (which are child items of the PathView) would try to access a deleted QQuickItemChangeListener upon their destruction. The underlying issue is that QQuickPathView::modelUpdated() is called, and before a refill() can happen, the view is deleted. QQuickPathView::refill() was the only execution path that was releasing the cached items (QQuickPathViewPrivate::itemCache), and since part of releasing an item involves removing the QQuickPathView as a change listener from the item, the item would access the deleted view (listener) when the item was being destroyed. This patch fixes the issue by also releasing cached items in QQuickPathViewPrivate::clear(), which is always called by the destructor. Task-number: QTBUG-68964 Change-Id: Ic5bf0943be79948c86bf7c07ef13ecd1a7b971ba Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io> Reviewed-by: Robin Burchell <robin.burchell@crimson.no> (cherry picked from commit 49c244e3c5a9138e6785515ebb64334705236ed4)
* Fix truncating of doubles to integersSimon Hausmann2018-06-213-0/+41
| | | | | | | | | | | | | | | | | When analyzing the data flow and determining that a double is or'ed with 0, we correctly assume a cast to an integer and insert a convert instruction in the IR instead of the actual bitwise or.. The JIT implements that, but the interpreter doesn't, resulting in incorrect values. This problem is specific to the SSA optimizer and the underlying isel requirements in 5.9 and does not apply to the design of the code generator in 5.11 and onwards. Task-number: QTBUG-68640 Change-Id: I954086b118b022bc6a8e00f17517c2d378825613 Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* Fix out of bounds stack access with the byte code interpreterSimon Hausmann2018-06-211-1/+1
| | | | | | | | | | | | | | | | | | | | | | | When generating the byte code, we use code like this to initialize the specialized instructions: Instruction::Binop op; op.foo = 1; ... to conveniently initialize the fields and then use the addInstruction template specialization to copy the non-generic bits (for example binop specific parameters) across into the Instr union. We copy InstrMeta<InstrType>::Size bits, which includes the alignment padding applied via MOTH_INSTR_ALIGN_MASK. However the source data type (Instruction::Binop in the above example) does not include fields and therefore the memcpy will read more bytes off the stack than were allocated. Discovered via ASAN during the investigation of QTBUG-68640. The issue is specific to Qt 5.9, it does not apply to the code base of 5.11 or later, where the byte code is strictly integer organized. Change-Id: Ia12b75f6c1ec6c9d77ee6e7c4253c1e18c46291c Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Merge remote-tracking branch 'origin/5.9.6' into 5.9Qt Forward Merge Bot2018-06-139-9/+103
|\ | | | | | | Change-Id: Ie78e8def5822a4dc9a15f5920c545a9d81bc2d37
| * Add changes file for Qt 5.9.6v5.9.6Antti Kokko2018-05-301-0/+43
| | | | | | | | | | | | Change-Id: I989ea0802f459b2440ee580e94340a1e64bf00e4 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * On network redirects, update finalUrl, not urlUlf Hermann2018-05-258-9/+60
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We want all further imports to be relative to the redirected URL, not the base one. Note that this will incorporate any prior URL interceptions into the final URL if a redirect happens. We don't really want this to happen because the result of interception is not meant to be the base for further URL lookup. However, as interception occurs before redirection, this is unavoidable. Don't use URL interceptors on remote URLs. Task-number: QTBUG-67882 Change-Id: I6693d14c8af8212dda9954d0bd0293c3c85441ef (cherry picked from commit cda2680d801acce4e221b23e88d9b3c5504f86e8) Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Bump versionOswald Buddenhagen2018-05-311-1/+1
|/ | | | Change-Id: I5e632951b46a7f76a1c090b95c90aea3b0142a84
* Software render: Fix warnings floodFriedemann Kleint2018-05-081-0/+1
| | | | | | | | | | | Add missing QPainter::end(), fixing: QBackingStore::endPaint() called with active painter on backingstore paint device Task-number: QTBUG-66452 Change-Id: Ia00e61953528b15015b3e41ba1868e670818cf14 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io> (cherry picked from commit 047f161b1a706e81034ccd8d4700a3126c16dfe4)
* Fix QML context leak with visual data model and list property modelsSimon Hausmann2018-05-073-6/+14
| | | | | | | | | | | | | | | | | | | | | | | When using the VDM or QML list properties as models, the delegate model injects an intermediate QQmlContext that provides access to the properties of the exposed QObject as context properties. Before commit e22b624d9ab1f36021adb9cdbfa9b37054282bb8, that context was marked to be owned by the parent QQmlContext. When the reference counting was introduced, that parent became referenced from the cacheItem (DelegateModelItem), but that intermediate QQmlContext became floating and was leaked. This can be observed by running the objectListModel test of tst_qquickvisualdatamodel with detect_leaks=1 in ASAN_OPTIONS. The leak is fixed by re-introducing the exceptional case of a parent holding a strong reference to the child, in just this one case. Change-Id: Iabc26990d39757b0abe0cddf69e76e88e40fba40 Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Michael Brasser <michael.brasser@live.com> (cherry picked from commit 01df9e5f46fd05a80f8f6fcaa91204e6184ded6f)
* QQuickItem: Guard against null deref in transformationsRobin Burchell2018-05-023-0/+33
| | | | | | | | Change-Id: Ieb14322c104d816842e04e521b556bfc11855f1c Task-number: QTBUG-67024 Reviewed-by: Robin Burchell <robin.burchell@crimson.no> Reviewed-by: Michael Brasser <michael.brasser@live.com> (cherry picked from commit f9686bc68696ad1e99a0587f15d05300d003d990)
* QQuickContext2DFBOTexture: use normalized sub rect when using FBO with POT ↵Richard Moe Gustavsen2018-04-231-2/+17
| | | | | | | | | | | | | | | | | texture When creating a Canvas item with renderStrategy set to Canvas.FramebufferObject we might end up creating an FBO with a POT texture (e.g on iOS) that doesn't match the size of the canvas. The result will be that the image turn out scaled. QSGTexture::normalizedTextureSubRect() is a function that needs to be overridden to be used. So this patch will create a subclass of QSGPlainTexture that overrides it, and returns the normalized subrect inside the FBO that that matches the size of the canvas. Task-number: QTBUG-59192 Change-Id: I0f0e57e117656df21a94b7015bd160c44485046d Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
* Merge remote-tracking branch 'origin/5.9.5' into 5.9Qt Forward Merge Bot2018-04-111-0/+69
|\ | | | | | | Change-Id: Id51ad58cceaa8d00999cf1881c28d179a564fd97
| * Add changes file for Qt 5.9.5v5.9.5Antti Kokko2018-03-211-0/+69
| | | | | | | | | | | | Change-Id: I8a8dd8f55075ce23e0ae85abde2538560d5fa2b5 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
| * Fix issue with bindings to aliases that cannot yet be resolvedErik Verbruggen2018-03-207-60/+125
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When an alias points to a child object which has not yet been initialized, it's id won't have been registered yet, so setting up a binding to it will result in a crash. The fix is: when setting a binding target fails, and its target property is an alias, queue them until all bindings have been set up, and try again. Task-number: QTBUG-57041 Change-Id: I4dc5a6d25c0a32fed9fd952c955e2006c76be45a Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> (cherry picked from commit aa94c6c0469b0595f483f13ac88459f0035deef9) (cherry picked from commit c3db3cfa296dbc5aa198520c1411830d165cd496)
| * Fix JITted code for jump strict-not-equal undefined on 32bitErik Verbruggen2018-03-202-10/+48
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The generated code for jump-on-strict-not-equal-undefined used the same logic (but with inverted conditions) as the equal case. For equality, one can jump to else if the value parts are not the same. So, for not-equal, if the value parts are the same, it would jump to the else block if they are the same. Meaning, an encoded int value of 0 (which is strict-not-equal to undefined) would end up being evaluated as equal. Task-number: QTBUG-66832 Change-Id: I5c6b8e9b11be53ae21a7164e0a1e0cbfd204f401 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> (cherry picked from commit 86702c3be53fda404ebe331207f9062675c952e0)
* | Fix crash when calling QQmlEngine::clearComponentCache()Simon Hausmann2018-04-106-61/+71
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We must protect various resources in the type loader with our existing lock. The QQmlTypeLoaderQmldirContent is now value based, so that we can release the lock on the shared cache early. Copying it involves adjusting the refcount of the QHash and QString instances in the QQmlDirParser. The safety of this was verified with a TSAN build and the example supplied in the task. It crashed reliably with TASN errors first and with this patch it runs without errors. Task-number: QTBUG-41465 Change-Id: I616843c4b8bdfd65d1277d4faa8cb884d8e77df8 Reviewed-by: Lars Knoll <lars.knoll@qt.io> (cherry picked from commit a3ad52526f79c1528f170c8affe5af00b68ca61d)
* | Fix bug preventing ungrabMouse() on TouchCancelDaniel d'Andrada2018-04-092-24/+76
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The order matters. There won't be a mouseGrabberItem() after the cancelExclusiveGrabImpl() call. So ungrab the mouse before calling it, not after. This cherry-pick includes some other changes to tst_qquickwindow.cpp (parts of 9d8fe2ac121162c15be6728495be2235b728325a) that enable the cherry-picked test function touchEvent_cancelClearsMouseGrab() to be the same as it is in 5.10 branch. Task-number: QTBUG-63680 Task-number: QTBUG-67445 Change-Id: I1ba6401c5d8eb3417907eb1e6ca20816b501f3ac Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> (cherry-picked from 0821180dc833376a738742e33f728983b9ca6f84) Reviewed-by: Tasuku Suzuki <tasuku.suzuki@qt.io>
* | Fix out of bounds reads in Array.concatLars Knoll2018-04-032-1/+15
| | | | | | | | | | | | | | | | | | | | | | In some cases, when our simple array data had an offset and data would wrap around, ArrayData::append would write out of bounds data into the new array, leading to crashes. Task-number: QTBUG-51581 Change-Id: I55172542ef0b94d263cfc9a17d7ca49ec6c3a565 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> (cherry picked from commit f495d4b660107536d0a67ba48e88550278f13893)
* | Handle function expressions as signal handlersErik Verbruggen2018-03-2810-9/+45
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There are two ways to use function expressions on the right-hand side of bindings: property var somethingPressed somethingPressed: function() { /* ..press something else.. */ } signal buttonPressed onButtonPressed: function() { /* ..handle buttonPress.. */ } In the former case, it declares a property that holds a function. So on initialization, the right-hand side of the binding returns a closure that gets assigned to the property 'somethingPressed'. In the latter case, the signal handler is explicitly marked as a function for clarity. So, the handler should not be returning the closure, but the handler should *be* the closure. In general, it is not possible to detect if the left-hand side is a property or a signal handler when generating QML cache files ahead of time. So for this case, we mark the function as only returning a closure. Then when instantiating the object, we check if it is a signal handler, and if the handler is marked as only returning a closure. If so, we set that closure to be the signal handler. This patch also handles function expressions in SignalTransition and function expressions as signal handlers. Task-number: QTBUG-57043 Task-number: QTBUG-50328 Task-number: QTBUG-50328 (cherry picked from commit 22b13921f8067f8a93164875a4ad59bed85b0400) (cherry picked from commit dc4d6293f9473c0f03c570430d08867d2d01c6e2) (cherry picked from commit 21301c1dbb00f4a2cd991e520423ed039b297ffb) Change-Id: I3008ddd847e30b7d0adef07344a326f84d85f1ba Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Bump versionOswald Buddenhagen2018-03-191-1/+1
| | | | | | | | Change-Id: I57ba6f7c99b1bcd92a9cb2039a4d7f212a1947ec
* | QML debugger: Don't crash when creating objects on engine destructionUlf Hermann2018-03-192-1/+26
| | | | | | | | | | | | | | | | | | | | | | You can create further objects while the QML engine is being destroyed. The debug service is not interested in those because they will be rather short lived anyway. Task-number: QTBUG-62458 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Change-Id: I255e18590d434e0487efac7c82c223752c645f25 (cherry-picked from commit 958e412a25523cc031564faae81c569aa6c3b01f)
* | Fix JITted code for jump strict-not-equal undefined on 32bitErik Verbruggen2018-03-152-10/+48
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The generated code for jump-on-strict-not-equal-undefined used the same logic (but with inverted conditions) as the equal case. For equality, one can jump to else if the value parts are not the same. So, for not-equal, if the value parts are the same, it would jump to the else block if they are the same. Meaning, an encoded int value of 0 (which is strict-not-equal to undefined) would end up being evaluated as equal. Task-number: QTBUG-66832 Change-Id: I5c6b8e9b11be53ae21a7164e0a1e0cbfd204f401 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Fix issue with bindings to aliases that cannot yet be resolvedErik Verbruggen2018-03-157-60/+125
|/ | | | | | | | | | | | | | | When an alias points to a child object which has not yet been initialized, it's id won't have been registered yet, so setting up a binding to it will result in a crash. The fix is: when setting a binding target fails, and its target property is an alias, queue them until all bindings have been set up, and try again. Task-number: QTBUG-57041 Change-Id: I4dc5a6d25c0a32fed9fd952c955e2006c76be45a Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> (cherry picked from commit aa94c6c0469b0595f483f13ac88459f0035deef9)
* Fix issue with allocating huge objects in the memory managerLars Knoll2018-03-082-3/+24
| | | | | | | | | | | | | | | | We shouldn't allocate objects that are larger than the size of a standard memory segment through the chunk allocator, as this can lead to problems when freeing the segment and then re-using it again. Instead allocate a private MemorySegment for these objects, and free it when the object gets garbage collected. Task-number: QTBUG-66732 Change-Id: Ic24ff65d204977f313ab0adaf7a8132883e525f0 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> (cherry picked from commit c99abf1851bbbfcec11eb77173df620746940ab0) Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
* Allow setting values in value type group properties in "on" assignmentsSimon Hausmann2018-02-263-1/+35
| | | | | | | | | | | | | | Assigning to a group property inside a property value source or interceptor as part of an "on assignment" is perfectly valid. That is because while "color" is a value type property, the on assignment means we're actually setting easing.type (in the example and test) on the property value source, not the color, and that one is a QObject. The same goes for interceptors. Change-Id: I505a658977a578894d6dfb00bf5c65b41e42b12f Task-number: QTBUG-56600 Reviewed-by: Michael Brasser <michael.brasser@live.com> (cherry picked from commit 2659c308792967322564b5088e0e21bb371e0283)
* Fix ListModel.get(idx) == ListModel.get(idx)Simon Hausmann2018-02-233-9/+17
| | | | | | | | | | | | | | | | | | | This is a regression introduced with commit 4876ea6a18ccdfd72014582aa5d50ab9f6b6ec9e. Where we previously always returned the same JS object, we would afterwards return a new JS object for every invocation, which breaks reference comparison. As we store the JS wrapper for the list element in the QQmlData->jsWrapper we can avoid repeated allocations. In order for that wrapper to keep working after modifications (insertion, etc.) to the list model, we have to replace the static element index with a reference to the node model meta-object, which also has an element index that however is kept up-to-date by the list model itself. Change-Id: I4368de6b6d86687fe96fbf73bd60b80b69d7b058 Task-number: QTBUG-52017 Reviewed-by: Michael Brasser <michael.brasser@live.com> (cherry picked from commit 44a89492b49f23a975377795dbb7a48916cb5081) Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Remove superfluous assert when traversing IRErik Verbruggen2018-02-222-1/+13
| | | | | | | | | | | | When accessing/calling a property on an object, it is possible (and perfectly fine) for that object to be a constant value. I.e. Undefined. All code handling such a call do handle constants correctly. Note: this is a 5.9 specific change, because 5.11 got rid of this code. Task-number: QTBUG-66027 Change-Id: Ied9d0c9c8f8bf958f8634f7be196900b3ea64861 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>