platform/upstream/qtdeclarative.git
9 years agoqmlplugindumper: do not pop up a window if an assert is triggered
Fawzi Mohamed [Wed, 30 Jul 2014 12:49:26 +0000 (14:49 +0200)]
qmlplugindumper: do not pop up a window if an assert is triggered

On windows the debug version of qmlplugindumper used to show a panel on
assert failure. Failure should be silent.

Done-with: Thomas Hartmann <thomas.hartmann@digia.com>
Task-number: QTCREATORBUG-12644
Change-Id: Ib5036754b37cdd5e3820e0cfd60b3ef7df3f1fb6
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
9 years agoFix assertion: ASSERT: "hasException" in file jsruntime/qv4engine.cpp, line 933
Robin Burchell [Thu, 31 Jul 2014 10:21:16 +0000 (12:21 +0200)]
Fix assertion: ASSERT: "hasException" in file jsruntime/qv4engine.cpp, line 933

This was seemingly tripped by trying to catch the exception twice: once with
catchException and once with catchExceptionAsQmlError.

Change-Id: I7176d56fe6e6f748e80d0894e314ed2b8f6e751d
Done-by: Mikko Harju <mikko.harju@jollamobile.com>
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
9 years agoMerge remote-tracking branch 'origin/stable' into 5.3
J-P Nurmi [Wed, 30 Jul 2014 13:41:10 +0000 (15:41 +0200)]
Merge remote-tracking branch 'origin/stable' into 5.3

Conflicts:
tests/auto/quick/qquicklistview/tst_qquicklistview.cpp

Change-Id: I80584b4f7d62cd86d3449e19176118e3bed886c1

9 years agoFix QQmlDelegateModel getting out of sync
Dan Vrátil [Tue, 29 Jul 2014 09:11:11 +0000 (11:11 +0200)]
Fix QQmlDelegateModel getting out of sync

Fixes a regression introduced by a0aefe1, which caused that the
source data model and adaptorModel could sometimes get out of
sync.

Change-Id: Ia6b5fc380cc6cf6549ae857e6da54e088a5dadb5
Reviewed-by: Alan Alpert (Personal) <416365416c@gmail.com>
9 years agoQQuickWindow: add some links to resetOpenGLState
Giuseppe D'Angelo [Mon, 28 Jul 2014 19:11:59 +0000 (21:11 +0200)]
QQuickWindow: add some links to resetOpenGLState

... or people might not find it. So link it from the docs of the
various signals which expect the users to leave the GL state as
they found it.

Change-Id: I1ae41958449ded110aa2398b415d593bf04d2b7f
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
10 years agoRemove metaobject revisioning for QQuickScreenAttached
Alan Alpert [Fri, 11 Jul 2014 01:50:02 +0000 (18:50 -0700)]
Remove metaobject revisioning for QQuickScreenAttached

Attached property versioning is not currently fully supported. Initial
approach was to add the version tags and not enforce them until you
could version attached properties. However the QML engine is currently
erroring on this. Specific error example:
""Screen.onNameChanged" is not available due to component versioning "

Workaround recommended in the JIRA task is to just not version them,
until attached property versioning is fully implemented.

Task-number: QTBUG-35569
Change-Id: I5ded7eb223ec00f70d847b3fac09ec240d5d7901
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
10 years agoDon't dereference null pointer.
Sérgio Martins [Sat, 26 Jul 2014 17:31:22 +0000 (18:31 +0100)]
Don't dereference null pointer.

Task-number: QTBUG-40448
Change-Id: I75eb886ae765191101d6b01ebd038211e5fe8fba
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
10 years agoFlickable: Cancel interaction on interactive changes
Albert Astals Cid [Wed, 23 Jul 2014 13:40:42 +0000 (15:40 +0200)]
Flickable: Cancel interaction on interactive changes

Otherwise if you have a listview with a flickable inside with a mouseare inside
the pressed is never set to false if you make the interactive property of the
outer list depend on the moving of the inner flickable. This makes that when
later you change currentIndex of the list and you have
StrictlyEnforceRange set, the list won't move because it still thinks it is pressed

Change-Id: I2c2021f486fc0a31840c3f2199bc7cb76dc01e3e
Reviewed-by: Martin Jones <martin.jones@jollamobile.com>
10 years ago Don't try to draw shader effect sources with dims < 0.
Gunnar Sletta [Mon, 28 Jul 2014 08:11:05 +0000 (10:11 +0200)]
 Don't try to draw shader effect sources with dims < 0.

Task-number: QTBUG-40099
Change-Id: I0eb0d877963a9394765ec8e0f10569a98a263743
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
10 years agoQQuickMouseArea: Mark override functions with Q_DECL_OVERRIDE
Albert Astals Cid [Thu, 24 Jul 2014 09:37:49 +0000 (11:37 +0200)]
QQuickMouseArea: Mark override functions with Q_DECL_OVERRIDE

Change-Id: I6fb5fd48a24affc463c5eb7ea0e80c81fab33f66
Reviewed-by: Martin Smith <martin.smith@digia.com>
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
10 years agoFix interaction of garbage collector with JS objects during QML type instantiation
Simon Hausmann [Wed, 14 May 2014 14:04:33 +0000 (16:04 +0200)]
Fix interaction of garbage collector with JS objects during QML type instantiation

It may happen that during the lengthy process of instantiating a tree of
objects for QML, the garbage collector runs.

For objects created by QML we support different ownership models, for example
in QtQuick visual parents keep their visual children alive, despite perhaps a
lack of QObject parentship. That ownership becomes active once the QML
autoparent function has assigned the correct visual parent, which happens after
object instantiation (after QQmlObjectCreator).

Similarly when a composite type is created, its QObject parent is only set
after all properties have been set. The root QObject is kept alive through a
special boolean, but if the sub-objects aren't children yet, their JS wrapper
might get deleted. For composite types with var properties, that also means
their var properties get deleted, such as the model property of TableView.qml
in the bug report.

In the future we want to support creating QWidget hierarchies with QML, which
also for layouts may rely on a delayed parent assignment for layouts.

To accommodate all this, this patch introduces an array on the JS stack that
keeps track of all JS wrappers for all QObjects created. This array is alive
during object tree creation. Afterwards, the different ownership models take
over, for example the auto parent function assigning a visual parent.

This patch also fixes an off-by-one in the total object count calculation
for composite types, where when instantiating a composite type as a sub-object
we counted the sub composite's object count but forgot the object itself.

Task-number: QTBUG-38835
Task-number: QTBUG-39966
Change-Id: I6104b2434510642081e0c54793ed296adeca7481
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
10 years agoDo not use mark() when marking ExecutionContexts
Lars Knoll [Fri, 25 Jul 2014 08:13:50 +0000 (10:13 +0200)]
Do not use mark() when marking ExecutionContexts

Some execution contexts in the parent chain can be allocated
on the C stack instead of the GC heap. Calling mark() on those would
push them onto the GC stack (which is identical to the JS stack).
In rare cases the reference can survive to live into the next call to
gc(), causing invalid accesses to already deleted contexts.

Change-Id: I709f58de27be9386cf70707c84e4c86c7c303fa7
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
10 years agoDon't recreate header and footer unnecessarily
Martin Jones [Wed, 23 Jul 2014 07:51:37 +0000 (17:51 +1000)]
Don't recreate header and footer unnecessarily

The only time that they need to be recreated is if the orientation
changes (even then, a good implementation could handle it, but no
point requiring that now).

Task-number: QTBUG-40375
Change-Id: Id0215fb812724827bb139cda8f8dc6208c703852
Reviewed-by: Andrew den Exter <andrew.den.exter@qinetic.com.au>
10 years agoClear the visibleImgTags list when setting up the text layout
Andy Shaw [Tue, 24 Jun 2014 12:05:43 +0000 (14:05 +0200)]
Clear the visibleImgTags list when setting up the text layout

Since the text layout is being redone then the visibleImgTags will be
repopulated, therefore it should be cleared first so that it doesn't have
duplicated entries.

Change-Id: I415f94326e156ae265bc044544f2bb0d7146ce4c
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
10 years agoImprove programmatic flicking of ListView (and Flickable).
Michael Brasser [Thu, 24 Jul 2014 00:39:26 +0000 (19:39 -0500)]
Improve programmatic flicking of ListView (and Flickable).

Fix bug when programmatically flicking ListView after a real flick in the
opposite direction. Also ensure a programmatic flick can flick past
bounds when situated at the bounds and DragAndOvershootBounds is set.

Task-number: QTBUG-38209
Change-Id: If4a2f65d0e7cb620b9af21f8a25a8a8797976125
Reviewed-by: Martin Jones <martin.jones@jollamobile.com>
10 years agoV4: work around a bug in libc++'s std::vector<bool>
Erik Verbruggen [Tue, 1 Jul 2014 11:34:31 +0000 (13:34 +0200)]
V4: work around a bug in libc++'s std::vector<bool>

The ++operator of std::vector<bool>::iterator in libc++ has a bug when
using it on an iterator pointing to the last element. It will not be set
to ::end(), but beyond that. (It will be set to the first multiple of
the native word size that is bigger than size().)

See http://llvm.org/bugs/show_bug.cgi?id=19663

Task-number: QTBUG-39911
Change-Id: Ic244d9c90ee6b596261a6e322301c411a14820a8
Reviewed-by: Fawzi Mohamed <fawzi.mohamed@digia.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
10 years agoQQmlComponent::create(): visual items must have a visual parent.
Mitch Curtis [Thu, 24 Jul 2014 08:13:42 +0000 (10:13 +0200)]
QQmlComponent::create(): visual items must have a visual parent.

There seems to be a bit of confusion about this on public forums.

Change-Id: Id193de541e7d7e353dc5d75b64a15f481e2cf8b6
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
10 years agoClean up the textures when deleting the content
Andy Shaw [Tue, 24 Jun 2014 12:01:35 +0000 (14:01 +0200)]
Clean up the textures when deleting the content

Whenever the content is deleted then the textures will be recreated so the
existing list of textures should be deleted and cleared to reclaim the
memory.

Change-Id: I4fdf77817a5f4b2330414e9d113c669d18de9af8
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
10 years agoSchedule layout changes to avoid refill() recursion.
Mitch Curtis [Mon, 21 Jul 2014 12:55:30 +0000 (14:55 +0200)]
Schedule layout changes to avoid refill() recursion.

Otherwise we add duplicate item delegates.

Task-number: QTBUG-40298
Change-Id: I8a2221d72f458c892720a71d87513808a5d725a6
Reviewed-by: Martin Jones <martin.jones@jollamobile.com>
10 years agoAdd autotest for incorrect steal of flick.
Michael Brasser [Wed, 26 Mar 2014 19:32:29 +0000 (14:32 -0500)]
Add autotest for incorrect steal of flick.

Task-number: QTBUG-37859
Change-Id: I86aa231ba264569a21d0b6cd109096eb5dd7a2fe
Reviewed-by: Martin Jones <martin.jones@jollamobile.com>
10 years agoDo not crash AtlasTexture if image is null
David Edmundson [Tue, 15 Jul 2014 13:27:30 +0000 (15:27 +0200)]
Do not crash AtlasTexture if image is null

Change-Id: I77ae68f523641a2e6b75623200f65407b64e1b40
Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org>
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
10 years agoFix Node object leak in QQuickTextEditPrivate
Liang Jian [Thu, 17 Jul 2014 07:40:18 +0000 (15:40 +0800)]
Fix Node object leak in QQuickTextEditPrivate

Delete Node objects stored in textNodeMap at two places to prevent leak.

Change-Id: I8eb0d1af900c94e1fab2f55b689de393e674f0aa
Reviewed-by: Andrew den Exter <andrew.den.exter@qinetic.com.au>
10 years agoshift and unshift fail for QQmlSequence types
Martin Jones [Wed, 16 Jul 2014 03:20:53 +0000 (13:20 +1000)]
shift and unshift fail for QQmlSequence types

QQmlSequence is a Custom array type, so must use the generic
shift/unshift implementation.

Task-number: QTBUG-40244
Change-Id: I491d9dc87a3a204daad4cf7460ffac81165056a5
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
10 years agoCheck for window != 0 in QuickTestResult::grabImage().
Friedemann Kleint [Mon, 21 Jul 2014 07:21:30 +0000 (09:21 +0200)]
Check for window != 0 in QuickTestResult::grabImage().

Task-number: QTBUG-38945
Change-Id: I081434a94899f8a1e2fd7275b67f62d06b56b0c2
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
10 years agoDoc: add documentation for the RSS News example
Leena Miettinen [Fri, 27 Jun 2014 16:15:59 +0000 (18:15 +0200)]
Doc: add documentation for the RSS News example

Change-Id: I87d7e43c19c897be3b98b219dacaf0f2bd30c1dd
Reviewed-by: Niels Weber <niels.weber@digia.com>
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
10 years agoFix typo in documentation
Kai Koehne [Thu, 17 Jul 2014 14:30:34 +0000 (16:30 +0200)]
Fix typo in documentation

Change-Id: Ie250c41943be661b19b5f09731508d6613f4cf82
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
10 years agoBinding Text width to implicitWidth can result in incorrect layout
Martin Jones [Thu, 10 Jul 2014 06:52:48 +0000 (16:52 +1000)]
Binding Text width to implicitWidth can result in incorrect layout

If the text is not left aligned and the width changes during layout due
to implictWidth changing, the text needs to be laid out again.

Task-number: QTBUG-40161
Change-Id: I1ad679ccdc5595dd749600abe08ed46ac179d7bf
Reviewed-by: Andrew den Exter <andrew.den.exter@qinetic.com.au>
10 years agoDocs: fix "classname" indentation in the qmldir specs
J-P Nurmi [Wed, 9 Jul 2014 11:22:30 +0000 (13:22 +0200)]
Docs: fix "classname" indentation in the qmldir specs

Change-Id: Idaaaaa77654c2cd3abb56d0bfd3ed7bac7281632
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
10 years agoFix role for generic Accessible items
Frederik Gladhorn [Wed, 9 Jul 2014 08:53:06 +0000 (10:53 +0200)]
Fix role for generic Accessible items

Currently QQuickItem specifies Pane as default role which at least on
linux leads to big confusion. Instead use QAccessible::Client which is
in line with QWidget.

Change-Id: I06b287843a0bf1546f16e67c53ea5d2321ba214b
Task-number: QTBUG-40136
Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
Reviewed-by: Caroline Chao <caroline.chao@digia.com>
10 years agoCalqlatr demo: Remove unused files
Niels Weber [Mon, 7 Jul 2014 10:19:25 +0000 (12:19 +0200)]
Calqlatr demo: Remove unused files

There were a few images etc that were never used. Remove them.

Change-Id: I606241903cf098cb495aa06ac4c595fb175cd9fc
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
10 years agoRemove usage of external dependencies from the RSS News demo
Topi Reinio [Fri, 27 Jun 2014 08:00:24 +0000 (10:00 +0200)]
Remove usage of external dependencies from the RSS News demo

Examples in qtdeclarative shouldn't depend on Qt Quick Controls,
Layouts, or add on modules like Qt Graphical Effects.

Change-Id: Ic069ed3223a4cfebde5263e846ae394aebed0b33
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@digia.com>
Reviewed-by: Niels Weber <niels.weber@digia.com>
10 years agoFix crash on QQmlEngine destruction.
Andrew den Exter [Fri, 27 Jun 2014 02:49:07 +0000 (12:49 +1000)]
Fix crash on QQmlEngine destruction.

QQmlTypeLoader references QQmlImportDatabase in a thread, so change the
declaration order so QQmlTypeLoader is destroyed and its thread stopped
before QQmlImportDatabase is destroyed.

Change-Id: Idfa511cf9625f893c4398f419a74d869169b478d
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
10 years agoDon't dereference null QQuickWindowPrivate.
Sérgio Martins [Thu, 3 Jul 2014 12:44:41 +0000 (13:44 +0100)]
Don't dereference null QQuickWindowPrivate.

windowDestroyed() triggers a sendPostedEvent(DeferredDelete) to
cleanup GL resources. If the window was deleted through deleteLater()
it will also be deleted at this point.

Change-Id: I3b0cc0f36c4a543c5fbaa4af107dc4aa0c8b6725
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
10 years agoAdd opt-out environment variable for @2x images
Morten Johan Sørvig [Mon, 19 May 2014 12:42:14 +0000 (14:42 +0200)]
Add opt-out environment variable for @2x images

There are cases where @2x images are in use but
where you don't want the associated behavior:
- You are implementing an image editor
- You are inheriting a resource set which has @2x
  images, but don't want that behavior with Qt.

Add support for disabling @2x behavior with QT_HIGHDPI_DISABLE_2X_IMAGE_LOADING.

Change-Id: Ia570dfe556e0571a19e5ebdc626c4a7e626721b9
Task-id: QTBUG-38485
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
10 years agoDoc: correct link/compilation errors in Qt Declarative
Nico Vertriest [Tue, 8 Apr 2014 11:24:42 +0000 (13:24 +0200)]
Doc: correct link/compilation errors in Qt Declarative

Task-number: QTBUG-34749
Change-Id: I507d54b0568d77c6099a0bd99f5c369b8667032a
Reviewed-by: Venugopal Shivashankar <venugopal.shivashankar@digia.com>
Reviewed-by: Martin Smith <martin.smith@digia.com>
10 years agoFix crash in Flickable with pressDelay.
Martin Jones [Wed, 2 Jul 2014 02:12:05 +0000 (02:12 +0000)]
Fix crash in Flickable with pressDelay.

Looks like this was exposed by the touch event compression change.

Task-number: QTBUG-40000
Change-Id: I037c848e0c5d766857dff3162c244213aba847da
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
10 years agoSkip rssnews demo if xmlpatterns is not present
Laszlo Agocs [Fri, 27 Jun 2014 13:14:33 +0000 (15:14 +0200)]
Skip rssnews demo if xmlpatterns is not present

Otherwise builds without the QtXmlPatterns module will fail.

Change-Id: I11d0b84653f8d59787b09cd9c12977d18be92729
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
10 years agoMerge "Merge remote-tracking branch 'origin/5.3.1' into 5.3" into refs/staging/5.3
Frederik Gladhorn [Mon, 30 Jun 2014 12:32:51 +0000 (14:32 +0200)]
Merge "Merge remote-tracking branch 'origin/5.3.1' into 5.3" into refs/staging/5.3

10 years agoDelete objects created by qmlplugindump
Daiwei Li [Tue, 25 Mar 2014 08:07:46 +0000 (01:07 -0700)]
Delete objects created by qmlplugindump

This helps plugin objects to shut down cleanly

Change-Id: I167f63220a35a7428f50715a4cb9072320ef1c87
Reviewed-by: Fawzi Mohamed <fawzi.mohamed@digia.com>
10 years agoAvoid double deletion of QQuickWindow
Shawn Rutledge [Tue, 17 Sep 2013 13:05:04 +0000 (15:05 +0200)]
Avoid double deletion of QQuickWindow

It's uncertain why 4fc0df58b8458052a818e3e970a97457882808e6 added
the call to sendPostedEvents(0, QEvent::DeferredDelete) but now we can
see that it easily results in the destructor calling itself, and
therefore double-deleting its own d_ptr.  removePostedEvents seems
safer to ensure that the window cannot be doubly deleted, in spite
of the qdoc warning that "You should never need to call this function."

Task-number: QTBUG-33436
Change-Id: I4873ebe179dde551407eba1f6baac5f03ca7f177
Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
Reviewed-by: Alan Alpert <aalpert@blackberry.com>
10 years agoFix QQmlDelegateModel ignoring layoutChange in certain situations
Dan Vrátil [Mon, 16 Jun 2014 12:10:09 +0000 (14:10 +0200)]
Fix QQmlDelegateModel ignoring layoutChange in certain situations

Fix a regression introduced by commit a0aefe1 which caused the model to
ignore layout changes if d->m_adaptorModel.rootIndex was just a descendant
of any of the parent indexes, or when no parent indexes at all were provided
in the notification.

Task-number: QTBUG-39492
Change-Id: I4c97929d25ef75947ccfcbbe5bc234096689c58d
Reviewed-by: Alan Alpert <aalpert@blackberry.com>
10 years agoFix intermittent crash with older MinGW releases
Robin KAY [Tue, 24 Jun 2014 22:35:22 +0000 (23:35 +0100)]
Fix intermittent crash with older MinGW releases

An alternate code-path was previously added to work around a bad
signature for the SHParseDisplayName() function in older and non-w64
versions of the MinGW headers. This code-path incorrectly passed a
single rather double indirect pointer to the third argument of that
function causing it to produce corrupt data and subsequently crash.
This change modifies the code to instead cast a pointer of the correct
type to the incorrect type expected by the headers.

Task-number: QTBUG-39793
Change-Id: I4d65dea4fc38d7e885468cd23434d8570c311fc2
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
10 years agoDoc: Add documentation for the Maroon in Trouble example
Leena Miettinen [Fri, 30 May 2014 16:01:56 +0000 (18:01 +0200)]
Doc: Add documentation for the Maroon in Trouble example

Change-Id: I8b272894ef6374aeb6ec09275d7ce96d16a6be0f
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
10 years agoMerge remote-tracking branch 'origin/5.3.1' into 5.3
Frederik Gladhorn [Wed, 25 Jun 2014 08:25:44 +0000 (10:25 +0200)]
Merge remote-tracking branch 'origin/5.3.1' into 5.3

Change-Id: Ic4418ade05ff7d89cbb375a25d9fd80353a2317a

10 years agoMerge remote-tracking branch 'origin/stable' into 5.3
Frederik Gladhorn [Wed, 25 Jun 2014 08:22:38 +0000 (10:22 +0200)]
Merge remote-tracking branch 'origin/stable' into 5.3

Change-Id: Iafccb173a9b5569bc9fd1022abb210955519fc61

10 years agoFix crash when deleting component in Component.onComplete through loader
Simon Hausmann [Fri, 20 Jun 2014 15:26:57 +0000 (17:26 +0200)]
Fix crash when deleting component in Component.onComplete through loader

This is a regression introduced with Qt 5.3.0. The recursion watcher code that
is supposed to handle the test case of QTBUG-39775 can detect the recursion
into the object creator. However the boolean that indicates the recursion is a
member of a structure that's deleted afterwards. To avoid access to deleted
memory, this patch simply reference counts data structure shared between the
creators and also wraps the recursion watcher into a convenience class that
also increases/decreases the reference count accordingly.

Change-Id: I8d2e3e200ab1295e89d951e09f187d382a056d5a
Task-number: QTBUG-39775
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
10 years agoFix memory leak in QQmlComponent::createObject
Simon Hausmann [Sat, 21 Jun 2014 08:56:00 +0000 (10:56 +0200)]
Fix memory leak in QQmlComponent::createObject

Regression introduced with 5.3.0. Prevent the leak of the object creator
on repeated createObject calls by using a scoped pointer.

Change-Id: Ib4fe7c9c6926c2390f7ae78f3287bb7da5f60527
Task-number: QTBUG-39742
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
10 years agoUpdate QtQuick import value to 2.3
Samuel Gaist [Tue, 3 Jun 2014 20:44:25 +0000 (22:44 +0200)]
Update QtQuick import value to 2.3

The current documentation uses import QtQuick 2.2 which is wrong since
there are new APIs like mipmap for the QML Image element.

Task-number: QTBUG-39302
Change-Id: I3cc3a1522efd85090c3b4011429fa16b95e79435
Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
10 years agoSet locked state while locking for grab.
Gunnar Sletta [Thu, 5 Jun 2014 05:11:54 +0000 (07:11 +0200)]
Set locked state while locking for grab.

Change-Id: If4b8fa77e6e3a288487a011e83791ad6a189675c
Reviewed-by: Manish Sharma <83.manish@gmail.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
10 years agoQQmlObjectCreator: Clear sharedState componentAttached in destruction/clear
Albert Astals Cid [Tue, 17 Jun 2014 11:10:35 +0000 (13:10 +0200)]
QQmlObjectCreator: Clear sharedState componentAttached in destruction/clear

Fixes crash when delegate is being deleted while not totally instantiated

Valgrind trace:
==15748== Invalid write of size 8
==15748==    at 0x57A02DB: QQmlComponentAttached::~QQmlComponentAttached() (qqmlcomponent.cpp:985)
==15748==    by 0x57A0318: QQmlComponentAttached::~QQmlComponentAttached() (qqmlcomponent.cpp:989)
==15748==    by 0x668736B: QObjectPrivate::deleteChildren() (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0)
==15748==    by 0x66900EB: QObject::~QObject() (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0)
==15748==    by 0x5D1D4B5: QQuickItem::~QQuickItem() (qquickitem.cpp:2064)
==15748==    by 0x5D33AE5: QQmlPrivate::QQmlElement<QQuickItem>::~QQmlElement() (qqmlprivate.h:106)
==15748==    by 0x668736B: QObjectPrivate::deleteChildren() (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0)
==15748==    by 0x66900EB: QObject::~QObject() (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0)
==15748==    by 0x5D1D4B5: QQuickItem::~QQuickItem() (qquickitem.cpp:2064)
==15748==    by 0x5D34655: QQmlPrivate::QQmlElement<QQuickLoader>::~QQmlElement() (qqmlprivate.h:106)
==15748==    by 0x668736B: QObjectPrivate::deleteChildren() (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0)
==15748==    by 0x66900EB: QObject::~QObject() (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0)
==15748==    by 0x5D1D4B5: QQuickItem::~QQuickItem() (qquickitem.cpp:2064)
==15748==    by 0x5D33AE5: QQmlPrivate::QQmlElement<QQuickItem>::~QQmlElement() (qqmlprivate.h:106)
==15748==    by 0x668736B: QObjectPrivate::deleteChildren() (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0)
==15748==    by 0x66900EB: QObject::~QObject() (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0)
==15748==    by 0x5D1D4B5: QQuickItem::~QQuickItem() (qquickitem.cpp:2064)
==15748==    by 0x5D348A5: QQmlPrivate::QQmlElement<QQuickFocusScope>::~QQmlElement() (qqmlprivate.h:106)
==15748==    by 0x668736B: QObjectPrivate::deleteChildren() (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0)
==15748==    by 0x66900EB: QObject::~QObject() (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0)
==15748==    by 0x5D1D4B5: QQuickItem::~QQuickItem() (qquickitem.cpp:2064)
==15748==    by 0x5D34655: QQmlPrivate::QQmlElement<QQuickLoader>::~QQmlElement() (qqmlprivate.h:106)
==15748==    by 0x668736B: QObjectPrivate::deleteChildren() (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0)
==15748==    by 0x66900EB: QObject::~QObject() (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0)
==15748==    by 0x5D1D4B5: QQuickItem::~QQuickItem() (qquickitem.cpp:2064)
==15748==    by 0x5D33AE5: QQmlPrivate::QQmlElement<QQuickItem>::~QQmlElement() (qqmlprivate.h:106)
==15748==    by 0x6689607: QObject::event(QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0)
==15748==    by 0x5D1B012: QQuickItem::event(QEvent*) (qquickitem.cpp:7114)
==15748==    by 0x6659CDC: QCoreApplication::notify(QObject*, QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0)
==15748==    by 0x66599D4: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0)
==15748==    by 0x665B826: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0)
==15748==    by 0x66B1242: ??? (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0)
==15748==    by 0x8EE2E43: g_main_context_dispatch (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.4100.0)
==15748==    by 0x8EE3087: g_main_context_iterate.isra.24 (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.4100.0)
==15748==    by 0x8EE312B: g_main_context_iteration (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.4100.0)
==15748==    by 0x66B06BB: QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0)
==15748==    by 0x66578EA: QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0)
==15748==    by 0x665EF45: QCoreApplication::exec() (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0)
==15748==    by 0x40711B: startShell(int, char const**, void*) (main.cpp:171)
==15748==    by 0x407A74: main (main.cpp:227)
==15748==  Address 0x1be83870 is 64 bytes inside a block of size 112 free'd
==15748==    at 0x4C2C2BC: operator delete(void*) (vg_replace_malloc.c:503)
==15748==    by 0x5815FB0: QQmlObjectCreator::~QQmlObjectCreator() (qqmlobjectcreator.cpp:156)
==15748==    by 0x57A52AA: QQmlIncubatorPrivate::clear() (qscopedpointer.h:62)
==15748==    by 0x57A53C6: QQmlIncubator::clear() (qqmlincubator.cpp:577)
==15748==    by 0x5DCEA20: QQuickLoader::setActive(bool) (qquickloader.cpp:350)
==15748==    by 0x5DCF6D2: QQuickLoader::qt_metacall(QMetaObject::Call, int, void**) (moc_qquickloader_p.cpp:277)
==15748==    by 0x579DC66: QQmlPropertyPrivate::write(QObject*, QQmlPropertyData const&, QVariant const&, QQmlContextData*, QFlags<QQmlPropertyPrivate::WriteFlag>) (qqmlproperty.cpp:1322)
==15748==    by 0x579E76E: QQmlPropertyPrivate::writeValueProperty(QObject*, QQmlPropertyData const&, QVariant const&, QQmlContextData*, QFlags<QQmlPropertyPrivate::WriteFlag>) (qqmlproperty.cpp:1246)
==15748==    by 0x579F2F9: QQmlPropertyPrivate::writeBinding(QObject*, QQmlPropertyData const&, QQmlContextData*, QQmlJavaScriptExpression*, QV4::ValueRef, bool, QFlags<QQmlPropertyPrivate::WriteFlag>) (qqmlproperty.cpp:1578)
==15748==    by 0x580CF69: QQmlBinding::update(QFlags<QQmlPropertyPrivate::WriteFlag>) (qqmlbinding.cpp:266)
==15748==    by 0x580D5BD: QQmlBinding::expressionChanged(QQmlJavaScriptExpression*) (qqmlbinding_p.h:105)
==15748==    by 0x57E6156: QQmlNotifier::emitNotify(QQmlNotifierEndpoint*, void**) (qqmlnotifier.cpp:81)
==15748==    by 0x57E6130: QQmlNotifier::emitNotify(QQmlNotifierEndpoint*, void**) (qqmlnotifier.cpp:76)
==15748==    by 0x57E6130: QQmlNotifier::emitNotify(QQmlNotifierEndpoint*, void**) (qqmlnotifier.cpp:76)
==15748==    by 0x5788FA3: QQmlData::signalEmitted(QAbstractDeclarativeData*, QObject*, int, void**) (qqmlengine.cpp:721)
==15748==    by 0x6688232: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0)
==15748==    by 0x57882A7: QQmlData::destroyed(QObject*) (qqmlengine.cpp:1658)
==15748==    by 0x668FD7D: QObject::~QObject() (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0)
==15748==    by 0x55E8B64: QQmlDMAbstractItemModelData::~QQmlDMAbstractItemModelData() (qqmladaptormodel.cpp:95)
==15748==    by 0x58643DC: QQmlDelegateModelPrivate::release(QObject*) (qqmldelegatemodel.cpp:520)
==15748==    by 0x586440C: QQmlDelegateModel::release(QObject*) (qqmldelegatemodel.cpp:536)
==15748==    by 0x5DFED4F: QQuickItemViewPrivate::releaseItem(FxViewItem*) (qquickitemview.cpp:2349)
==15748==    by 0x5DBAB94: QQuickGridViewPrivate::addVisibleItems(double, double, double, double, bool) (qquickgridview.cpp:497)
==15748==    by 0x5DFC94E: QQuickItemViewPrivate::refill(double, double) (qquickitemview.cpp:1751)
==15748==    by 0x5DFF26A: QQuickItemViewPrivate::layout() (qquickitemview.cpp:1859)
==15748==    by 0x5D275F7: QQuickWindowPrivate::polishItems() (qquickwindow.cpp:271)
==15748==    by 0x5D02B7D: QSGThreadedRenderLoop::polishAndSync(QSGThreadedRenderLoop::Window*) (qsgthreadedrenderloop.cpp:1150)
==15748==    by 0x5D03167: QSGThreadedRenderLoop::event(QEvent*) (qsgthreadedrenderloop.cpp:1235)
==15748==    by 0x6659CDC: QCoreApplication::notify(QObject*, QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0)
==15748==    by 0x66599D4: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0)
==15748==    by 0x66B00CC: QTimerInfoList::activateTimers() (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0)
==15748==    by 0x66B03F0: ??? (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0)
==15748==    by 0x8EE2E43: g_main_context_dispatch (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.4100.0)
==15748==    by 0x8EE3087: g_main_context_iterate.isra.24 (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.4100.0)
==15748==    by 0x8EE312B: g_main_context_iteration (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.4100.0)
==15748==    by 0x66B06BB: QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0)
==15748==    by 0x66578EA: QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0)
==15748==    by 0x665EF45: QCoreApplication::exec() (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0)
==15748==    by 0x40711B: startShell(int, char const**, void*) (main.cpp:171)
==15748==    by 0x407A74: main (main.cpp:227)

Change-Id: I2c7d38fa5a2566520173bff7ad4e5f9c966d083e
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
10 years agoInitialize velocity
Albert Astals Cid [Mon, 16 Jun 2014 14:51:17 +0000 (16:51 +0200)]
Initialize velocity

Fixes valgrind warning
==21054== Conditional jump or move depends on uninitialised value(s)
==21054==    at 0x5DAE6D4: QQuickListView::viewportMoved(QFlags<Qt::Orientation>) (qquicklistview.cpp:2789)
==21054==    by 0x5D9ED76: QQuickFlickablePrivate::itemGeometryChanged(QQuickItem*, QRectF const&, QRectF const&) (qquickflickable.cpp:296)
==21054==    by 0x5DFC438: QQuickItemViewPrivate::itemGeometryChanged(QQuickItem*, QRectF const&, QRectF const&) (qquickitemview.cpp:1158)
==21054==    by 0x5DAC6A2: QQuickListViewPrivate::itemGeometryChanged(QQuickItem*, QRectF const&, QRectF const&) (qquicklistview.cpp:1369)
==21054==    by 0x5D0D5F2: QQuickItem::geometryChanged(QRectF const&, QRectF const&) (qquickitem.cpp:3365)
==21054==    by 0x5D11822: QQuickItem::setY(double) (qquickitem.cpp:5858)
==21054==    by 0x5C84FED: QQuickTimeLinePrivate::advance(int) (qquicktimeline.cpp:826)
==21054==    by 0x5C85155: QQuickTimeLine::updateCurrentTime(int) (qquicktimeline.cpp:702)
==21054==    by 0x58576FA: QAbstractAnimationJob::setCurrentTime(int) (qabstractanimationjob.cpp:497)
==21054==    by 0x5857BDD: QQmlAnimationTimer::updateAnimationsTime(long long) (qabstractanimationjob.cpp:119)
==21054==    by 0x640C7EC: QUnifiedTimer::updateAnimationTimers(long long) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0)
==21054==    by 0x58570C8: QQmlAnimationTimer::startAnimations() (qabstractanimationjob.cpp:152)
==21054==    by 0x66895B5: QObject::event(QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0)
==21054==    by 0x6659CDC: QCoreApplication::notify(QObject*, QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0)
==21054==    by 0x66599D4: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0)
==21054==    by 0x665B826: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0)
==21054==    by 0x66B1242: ??? (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0)
==21054==    by 0x8EE2E43: g_main_context_dispatch (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.4100.0)
==21054==    by 0x8EE3087: g_main_context_iterate.isra.24 (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.4100.0)
==21054==    by 0x8EE312B: g_main_context_iteration (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.4100.0)
==21054==    by 0x66B06BB: QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0)
==21054==    by 0x66578EA: QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0)
==21054==    by 0x665EF45: QCoreApplication::exec() (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0)

Change-Id: I72e101140b8bee0b6867cf92902e70660c8d21ab
Reviewed-by: Martin Jones <martin.jones@jollamobile.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
10 years agoImprove RSS News Qt Quick Demo
Topi Reinio [Thu, 12 Jun 2014 13:05:05 +0000 (15:05 +0200)]
Improve RSS News Qt Quick Demo

    - Add main.cpp for launching, use Qt resource system
    - Update feed URLs
    - New layout and images
    - Make the example scalable, react to orientation changes
    - Use graphical effects and animations
    - Display time and link for each news item
    - Fix license headers to use the correct license

Task-number: QTBUG-37203
Change-Id: I6f8941cbdaed78a3dee30305496b3ea7777ba3e3
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@digia.com>
10 years agoFix QQmlComponent detailed description.
Mitch Curtis [Tue, 17 Jun 2014 11:35:21 +0000 (13:35 +0200)]
Fix QQmlComponent detailed description.

setParent() => setParentItem()

Task-number: QTBUG-39687
Change-Id: I67dc871a6d3b10af321d1f7b08921dcad0a6f19d
Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
10 years agoAdd a QQuickWidget - QQuickView comparison example
Laszlo Agocs [Fri, 6 Jun 2014 14:53:33 +0000 (16:53 +0200)]
Add a QQuickWidget - QQuickView comparison example

Besides serving as a side-by-side test tool for QQuickView and
QQuickWidget (including multisampling), it also demonstrates some
useful practices for rendering 3D content via QQuickFramebufferObject.

Done-with: Paul Olav Tvete <paul.tvete@digia.com>
Change-Id: Ie73e998ee91e32ef1535dd6f0f65c8a69addcc5e
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
10 years agoFix crash in QObjectWrapper
Oleg Shparber [Tue, 17 Jun 2014 22:47:43 +0000 (15:47 -0700)]
Fix crash in QObjectWrapper

This can happen during QObject destruction, when
QObjectPrivate::deleteChildren() itself sets entries
in the children list to zero when deleting. These
zeros cause crash in markChildQObjectsRecursively().

Task-number: QTBUG-38635
Change-Id: I29ad9e793b78ca4e8d73fbb125f46db1b8292f20
Reviewed-by: Alan Alpert <aalpert@blackberry.com>
10 years agoUse QSignalSpy instead of waitFor in tst_qpacketprotocol
Ulf Hermann [Mon, 16 Jun 2014 09:21:01 +0000 (11:21 +0200)]
Use QSignalSpy instead of waitFor in tst_qpacketprotocol

QTcpServer::waitForNewConnection() blocks the event loop and prevents
the client, that runs in the same event loop, from sending anything.
Also, if the connection is established before waitForNewConnection() is
called we're going to wait for another connection, which will never
happen.

It's not clear if this is actually the cause of the test failures but
blocking the event loop is generally a bad idea and the last change to
the test that actually made a difference to the functionality added
exactly that line, see b36bbe3626bc68ac267d7653fa6408a8f258251d.

Task-number: QTBUG-39655
Change-Id: Ic03a4e7cac78155532588476b99449664c343ee2
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
10 years agoAdd changelog for 5.3.1 upstream/5.3.1
Simon Hausmann [Wed, 18 Jun 2014 08:27:05 +0000 (10:27 +0200)]
Add changelog for 5.3.1

Change-Id: I5d9c67a2f89c0c191de9e6de24d068fca17dba0e
Reviewed-by: Jani Heikkinen <jani.heikkinen@digia.com>
10 years agoBump version
Oswald Buddenhagen [Tue, 17 Jun 2014 22:28:50 +0000 (00:28 +0200)]
Bump version

Change-Id: I48d18a93971f4595b295aa6a1f70dfbe2b2266a1

10 years agoSeparate renderer out in "OpenGL under QML" example.
Gunnar Sletta [Fri, 13 Jun 2014 11:59:57 +0000 (13:59 +0200)]
Separate renderer out in "OpenGL under QML" example.

The example was promoting very bad practice.

Change-Id: Ibb83780ec33e59ee5aabf65a775705dd0da681e6
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
10 years agoUse newest QtQuick in rssnews demo
Niels Weber [Fri, 13 Jun 2014 11:27:45 +0000 (13:27 +0200)]
Use newest QtQuick in rssnews demo

Task-number: QTBUG-37203
Change-Id: I720e510b875f63eb5c184cd7d8b9eb127674d505
Reviewed-by: Alessandro Portale <alessandro.portale@digia.com>
10 years agoMerge remote-tracking branch 'origin/stable' into 5.3
Sergio Ahumada [Sat, 14 Jun 2014 16:19:53 +0000 (18:19 +0200)]
Merge remote-tracking branch 'origin/stable' into 5.3

Change-Id: Id783915b0139a90ecfb99f8298b1ff5cf506a1dd

10 years agoFix copy-paste errors.
Richard J. Moore [Fri, 18 Apr 2014 10:53:05 +0000 (11:53 +0100)]
Fix copy-paste errors.

Fix two copy-paste errors identified by static analysis at
http://www.viva64.com/en/b/0251/

Change-Id: I359a4635a4a837995f9ed9bf0182a1ca543725df
Reviewed-by: Daniel Molkentin <daniel@molkentin.de>
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
10 years agoMerge remote-tracking branch 'origin/stable' into 5.3
Simon Hausmann [Fri, 13 Jun 2014 14:45:46 +0000 (16:45 +0200)]
Merge remote-tracking branch 'origin/stable' into 5.3

Change-Id: I9cff3f4d42d58157fd8d17ec172b6a74dc386508

10 years agoFix Stmt:Data object leak
Liang Jian [Wed, 28 May 2014 07:46:51 +0000 (15:46 +0800)]
Fix Stmt:Data object leak

call Stmt::destroyData() whenever a Stmt object is to be removed in
BasicBlock to delete the Stmt::Data object hold in the Stmt object.

Change-Id: I59c939d79b935153e6f8613e54f149120f5198f5
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
10 years agoSet StrongFocus on QQuickWidget
Laszlo Agocs [Thu, 12 Jun 2014 13:10:51 +0000 (15:10 +0200)]
Set StrongFocus on QQuickWidget

Make text input functional out of the box.

Both QGraphicsView and QDeclarativeView (QQuick1) do this so there
is no reason to do this differently for QQuickWidget. For QQuickWindow
and QQuickView the issue does not exist in the first place, they will
accept the focus by default.

Task-number: QTBUG-39605
Change-Id: I74f01b85342df51aa3c0e80baf58ba1619c63438
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
10 years agoDoc: Clarify where JavaScript fits in QML code
Sze Howe Koh [Wed, 11 Jun 2014 23:24:17 +0000 (07:24 +0800)]
Doc: Clarify where JavaScript fits in QML code

- Rewrite the introductory list.

- Rewrite the section about application startup code.

- Flatten sections. Previously, there were two \section1 headings:
  "JavaScript Expressions in QML Objects" and "Running JavaScript at
  Startup". This split wasn't very natural, as startup code needs to be
  called from an object, while imported JS files aren't in objects.

- Some minor formatting/wording changes in unrelated areas.

Change-Id: Ie08f94e2ea77ca84f80491c782bc30612f7ef698
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
10 years agoFix EllipseShape for Affectors in QtQuick.Particle
Daniel Oberländer [Thu, 29 May 2014 19:37:54 +0000 (21:37 +0200)]
Fix EllipseShape for Affectors in QtQuick.Particle

EllipseShape was theated like rectangles if set as shape in an Affector
due to an unimplemented containment check (was marked as TODO in source
code). This fix implements the missing check.

Change-Id: I8df1406f147c56e799531fccf4963110c9fdd8ef
Reviewed-by: Alan Alpert (Personal) <416365416c@gmail.com>
10 years agoInitialize QSGPaintedNode with an empty size.
Gunnar Sletta [Thu, 12 Jun 2014 08:02:55 +0000 (10:02 +0200)]
Initialize QSGPaintedNode with an empty size.

Failing to do so would cause it to not update its size when set to 1x1
which in turn would cause it to never update its texture, causing crashes
later during rendering.

Task-number: QTBUG-39555
Change-Id: I099d9ef2d6968ece21f7c03819abfd6685bec430
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
10 years agoAdd node description to painted items.
Gunnar Sletta [Thu, 12 Jun 2014 08:07:59 +0000 (10:07 +0200)]
Add node description to painted items.

Change-Id: I47ad9df1550649131ac5379acbf7d133088c60a8
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
10 years agoMake sure shader rewriter stops immediately on an empty string.
Gunnar Sletta [Mon, 9 Jun 2014 08:42:08 +0000 (10:42 +0200)]
Make sure shader rewriter stops immediately on an empty string.

The 'invalid' token didn't really serve a purpose. If a string contains
0 for any reason, it one has reached the end.

Task-number: QTBUG-39505
Change-Id: I3fc9b8f28dc223386a72bbfa28f70fcca0fde223
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
10 years agoFix forwarding of keyboard events to multiple target items
Joni Poikelin [Mon, 9 Jun 2014 11:50:29 +0000 (14:50 +0300)]
Fix forwarding of keyboard events to multiple target items

Fix regression when multiple items are set to Keys.forwardTo attached
property. QML items accept key events automatically and event should be
by default in accepted state when entering handler.

Task-number: QTBUG-39168
Change-Id: Ibf6c163c4059269996113634efa48ad2fe4d838d
Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
10 years agoFurther improve the StocQt demo
Topi Reinio [Tue, 27 May 2014 11:18:00 +0000 (13:18 +0200)]
Further improve the StocQt demo

- Display the price scale on y-axis, highest trade volume on x-axis
- Adjust grid size for the chart based on the active view
- Fix incorrect drawing of volume data
- Correctly scale the chart based on the price/volume ranges
- Align the volume graph to the price chart and improve its look
- Use Date.toDateString() instead of hardcoded month names
- Minor fixes to layout

Task-number: QTBUG-38254
Change-Id: I0e7ef18a152c7678371fb9c01f86d3d91a289472
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
Reviewed-by: Niels Weber <niels.weber@digia.com>
10 years agoMerge remote-tracking branch 'origin/stable' into 5.3
Sergio Ahumada [Wed, 11 Jun 2014 08:03:38 +0000 (10:03 +0200)]
Merge remote-tracking branch 'origin/stable' into 5.3

Change-Id: I595002245ffee7aa739ce6ee9806cf509a5e7405

10 years agoDrag&Drop support for child items in QQuickWidget
Paul Olav Tvete [Tue, 10 Jun 2014 09:09:21 +0000 (11:09 +0200)]
Drag&Drop support for child items in QQuickWidget

This is a quick-fix. The real issue is that QWidget and QWindow
reacts differently when a QDragEnterEvent is rejected.

Change-Id: I3e3e50610c14acfaada9c1b243b88cfe9eae54b2
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
10 years agoStop polish-and-sync timer when the window is destroyed
Laszlo Agocs [Fri, 6 Jun 2014 13:02:21 +0000 (15:02 +0200)]
Stop polish-and-sync timer when the window is destroyed

The threaded render loop continues to run the polish-and-sync timer for
ever in case the QQuickWindow is destroyed while the timer is active.
Instead of pumping the timer events on the render thread for ever, the
timer has to be killed somewhere.

Change-Id: I8e458624e26ebfacb6cc69a4f2fbb3da57ae5e0e
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
10 years agoadd missing signal declaration in Exposing Attributes to QML example
Shawn Rutledge [Tue, 13 May 2014 13:29:06 +0000 (15:29 +0200)]
add missing signal declaration in Exposing Attributes to QML example

Task-number: QTBUG-33985
Change-Id: Id6a2a51467ee5de44bf51fb48e3f9346a832f8f2
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
10 years agoAdd support for multisampling in QQuickWidget
Laszlo Agocs [Wed, 4 Jun 2014 13:05:00 +0000 (15:05 +0200)]
Add support for multisampling in QQuickWidget

Use a multisampled fbo when the requested format has samples > 0.
Resolving happens after each rendering of the scene.

The blit to the temporary non-multisampled fbo could be avoided,
in theory, by sending the fbo instead of the texture id down the
stack and performing a blit directly to fbo #0. This however
involves a number of potential issues, for example due to the
non-sharability of FBOs between contexts. Hence it is left as a
future exercise.

Task-number: QTBUG-39187
Change-Id: Iae98b969bcbc3bb57e6d73288496f5428913c826
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
10 years agoKeep QML and JS messages separate in QQmlProfilerService test
Ulf Hermann [Wed, 4 Jun 2014 08:48:47 +0000 (10:48 +0200)]
Keep QML and JS messages separate in QQmlProfilerService test

Like that we can deal with misbehaving clocks in the tested
application.

Task-number: QTBUG-39169
Change-Id: Ia9f9844efb6f20508bccac3ca2d593d01d55fc83
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
10 years agoV4 Yarr JIT: push/pop addressTempRegister.
Erik Verbruggen [Thu, 5 Jun 2014 12:13:39 +0000 (14:13 +0200)]
V4 Yarr JIT: push/pop addressTempRegister.

Change 6572d4e50d73ac60a8974d07de74c27a7f99ebef moved the
addressTempRegister from r3 to r10, so that calculated calls would not
overwrite the fourth argument of a call. However, JSC's Yarr JIT might
also use it for certain loads, so it also needs to save r10.

Task-number: QTBUG-39289
Change-Id: I0a4e725b6b11ab5e772330662049668bed009c05
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
10 years agoFix opacity issue in the renderer.
Gunnar Sletta [Wed, 4 Jun 2014 16:59:58 +0000 (18:59 +0200)]
Fix opacity issue in the renderer.

Given the following tree:

OpacityNode
    |
TransformNode (which is a batch root)
    |
GeometryNode

If both opacity and transform nodes were changed this frame, we would
hit the optimized "scrolling" path while traversing the tree and abort
updating that subtree. As a result the opacity change was not
propegated to the geometry node and it would be rendered incorrectly.

Fix this by skipping the optimized path when there are opacity changes
in an ancestor.

Task-number: QTBUG-39190
Change-Id: Ieaebfe3de62b961204bd3103fe9913d60e75e412
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
10 years agoFix QQuickWidget offscreen surface format and creation order
Laszlo Agocs [Thu, 5 Jun 2014 13:16:33 +0000 (15:16 +0200)]
Fix QQuickWidget offscreen surface format and creation order

Create the QOffscreenSurface together with, and after, the QOpenGLContext.
This is essential to get a surface that is compatible with the context and
is in line with the QOffscreenSurface usage recommendation from the docs.

Otherwise, if the offscreen surface gets created first, without
knowing what _actual_ format (e.g. EGL configuration) the context
will use, the result is an incompatible surface and context on
systems that offer a different set of configurations for window and
pbuffer surfaces.

This fixes QQuickWidget on EGL implementations that offer both 16 and 24
bit pbuffer configs, but only 24 (or 32) bit window configs.

Task-number: QTBUG-39474
Change-Id: I43925d2b25e28d26d172ce9d22651c25b281b832
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
10 years agoDoc: Removed redundant link to section in the same page.
Jerome Pasion [Tue, 3 Jun 2014 13:52:49 +0000 (15:52 +0200)]
Doc: Removed redundant link to section in the same page.

There is no need to refer to a different section as it is understood
that those instructions apply to all examples.

Change-Id: I2d0d2d6cbf84790bc4ca2f3deda57ab5d3d1c6c1
Reviewed-by: Martin Smith <martin.smith@digia.com>
10 years agoDoc: Updated "Qt Quick Examples" pages.
Jerome Pasion [Wed, 28 May 2014 14:19:08 +0000 (16:19 +0200)]
Doc: Updated "Qt Quick Examples" pages.

-added instructions about running the example (using \include)
-used the example names as sections in the collection pages
-general editing and documentation polishing
-updated copyright information

Change-Id: I044f29fcc1921a541040505d5821acb06dc4cb35
Reviewed-by: Sze Howe Koh <szehowe.koh@gmail.com>
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
10 years agoDetect and warn when using QQuickWidget as a native child
Laszlo Agocs [Wed, 4 Jun 2014 10:42:11 +0000 (12:42 +0200)]
Detect and warn when using QQuickWidget as a native child

This is not supported.

Change-Id: I19ed485ee629baa4f3631770ab0c730e0ef6748e
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
10 years agoUse the correct precision specifier in visualizer GLSL.
Gunnar Sletta [Tue, 3 Jun 2014 11:01:49 +0000 (13:01 +0200)]
Use the correct precision specifier in visualizer GLSL.

Task-number: QTBUG-39119
Change-Id: I0ec4909167f5694ce4229df8202c89742be21d0a
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
Reviewed-by: Andrew Knight <andrew.knight@digia.com>
10 years agoFix bindings to when property of States not always working
Simon Hausmann [Wed, 4 Jun 2014 11:49:50 +0000 (13:49 +0200)]
Fix bindings to when property of States not always working

The "when" property is of type QQmlBinding* and we special case that type when
writing property bindings. However in order for that to work, the meta-type for
QQmlBinding* needs to be registered at the point in time when resolving
properties in the type compiler. In Qt 5.1/5.2 this worked by accident due to
a different code paths that implicitly registered the meta-type earlier from a
different location.

There are a couple of property types for which we have special handling, such as
QQmlV4Handler and QJSvalue, besides QQmlBinding*. We do register them explicitly
at engine initialization time, and therefore we should also initialize the meta-type
for QQmlBinding* there.

Task-number: QTBUG-39421
Change-Id: Iec8609848b632afa52aa42cf0b807330c74f6f3a
Reviewed-by: Joona Petrell <joona.petrell@jollamobile.com>
10 years agoFix method overload calling of Qt slots from JavaScript
kh1 [Wed, 4 Jun 2014 11:17:30 +0000 (13:17 +0200)]
Fix method overload calling of Qt slots from JavaScript

After commit ac57f185d1a2203cd4b585df7bd7af01c3ec33ed we succeed in selecting
the correct overload based on the supplied arguments. However when calling
slots on objects without a property cache, we end up using the local "dummy"
variable to store the synthetic propert data. We also store the currently best
patch in the "best" variable, which is a _pointer_ to the property data of the
match. Suppose we have 5 overloads to choose from, we find that the 3rd is
the best. Then we try the fourth but find it unsufficient and break out of
the loop. Unfortunately the "dummy" property data at this point contains the
data of the fourth (wrong) overload, and our best match variable points to it.
So then when we finally call the method, we do it based on the wrong property
data.

The easy patch is to simply copy the few bytes of property data, so "best" is
stored by value instead of pointer.

Change-Id: Ie2ebbdb88a117770b6c7b9490e1c634077020e9d
Reviewed-by: Karsten Heimrich <karsten.heimrich@digia.com>
10 years agoMake ItemViews displayMargin work correctly when set to negative values
Albert Astals Cid [Thu, 15 May 2014 08:02:43 +0000 (10:02 +0200)]
Make ItemViews displayMargin work correctly when set to negative values

We need to call forceLayoutPolish instead of refillOrLayout
so that the visibility is correctly updated. Also update one
line that sets visibility in GridView

Change-Id: I29fa67cdd5196a744fab9507b4104cb83ad4bf5e
Reviewed-by: Martin Jones <martin.jones@jollamobile.com>
10 years agoFix worker scripts with cached compilation units
Simon Hausmann [Mon, 2 Jun 2014 12:50:00 +0000 (14:50 +0200)]
Fix worker scripts with cached compilation units

Try to retrieve them from the compilation unit cache instead of from
the file system if possible. The evaluation code can be shared.

In the long run it would be nice to use the type loader here and allow for
worker scripts to have dependencies/imports. But that is a more intrusive
change given the typeloader's dependency on the engine.

Change-Id: I7f9d6be1ff31433d4b14607cf0c25acdf466ac67
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
10 years agoMake QQuickRenderControl usable (still private)
Paul Olav Tvete [Tue, 3 Jun 2014 12:19:14 +0000 (14:19 +0200)]
Make QQuickRenderControl usable (still private)

QQuickRenderControl needs a QQuickWindow in order to function. This
required the use of a private QQuickWindow constructor, meaning that
only friend classes of QQuickWindow could use QQuickRenderControl.

This change adds a factory function, QQuickRenderControl::createOffscreenWindow().

Task-number: QTBUG-38996
Change-Id: I92f6f1f60045934f3dd33c300352247852463c73
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
10 years agoFix crash in QSGRenderContext::invalidate().
Yoann Lopes [Fri, 23 May 2014 13:54:05 +0000 (15:54 +0200)]
Fix crash in QSGRenderContext::invalidate().

QSGRenderContext was holding pointers to QFontEngines without
increasing the font engine's ref count, allowing them to be deleted
before QSGRenderContext could make use of them.

Task-number: QTBUG-36573
Task-number: QTBUG-38313
Change-Id: I0ed28bb44882c55f330c27c23b533b7999d7e04b
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
10 years agoPrevent initial clipping in Context2D
Ulf Hermann [Mon, 2 Jun 2014 10:17:10 +0000 (12:17 +0200)]
Prevent initial clipping in Context2D

Don't set an initial clip path and only start clipping once a clip
path has manually been set.

Task-number: QTBUG-39114
Change-Id: Id277775d6eb0be87bead0e5d076f32a07ebdfe5c
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
10 years agoRecognize "in" keyword in vertex shaders
Laszlo Agocs [Mon, 2 Jun 2014 10:07:13 +0000 (12:07 +0200)]
Recognize "in" keyword in vertex shaders

Checking only for "attribute" is not sufficient: with newer GLSL versions
"in" is used.

Task-number: QTBUG-39143
Change-Id: Ibdb5940f5aba1485ecaad2e2c4a3aa7150af6d99
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
10 years agoDestroy the FBO in QQuickWidget while a context is current
Laszlo Agocs [Mon, 2 Jun 2014 08:21:56 +0000 (10:21 +0200)]
Destroy the FBO in QQuickWidget while a context is current

When creating the new FBO, it will try to restore the previous FBO
after initialization. The internal tracking of the current FBO goes
horribly wrong when a QOpenGLFramebufferObject is destroyed with
no context current. In 5.4 the problem is solved by removing the
tracking altogether. Here QQuickWidget is fixed to play nice and
destroy QOpenGLFramebufferObject always with the context current.

Task-number: QTBUG-39389
Change-Id: Ic6917696ed61f284d661a578c9c7f2e0673c412d
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
10 years agoFix QQuickWidget cleanup and invalidation sequence
Laszlo Agocs [Fri, 30 May 2014 11:53:25 +0000 (13:53 +0200)]
Fix QQuickWidget cleanup and invalidation sequence

Make sure the context/surface are still alive and current while destroying
the render control.

Task-number: QTBUG-39034
Change-Id: I6ff0069985a9121a63025bfb165493b3f003391d
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
10 years agoDump all received messages if tst_QQmlProfilerService fails
Ulf Hermann [Mon, 2 Jun 2014 14:32:16 +0000 (16:32 +0200)]
Dump all received messages if tst_QQmlProfilerService fails

Without all the context we can't really tell what happened.

Task-number: QTBUG-39169
Change-Id: Ic5192498440a0d55c279549243dfce65f8168317
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
10 years agoDisable qmlscene and qmlplugindump when doing static builds
Simon Hausmann [Mon, 2 Jun 2014 08:16:07 +0000 (10:16 +0200)]
Disable qmlscene and qmlplugindump when doing static builds

Both of these tools rely on the ability to load plugins in order to function.
QmlScene in particular can theoretically be used with just "QtQml" imports
and QObjects, but that's not very useful for the _scene_ type of applications
qmlscene is intended for ;-). And in a static build it can't load QtQuick.

Task-number: QTBUG-39003
Change-Id: I0d4328dc4eb5c4e3153668e65a12f8eb3757f660
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
10 years agoKeep the internal state about the bound fbo up to date
Laszlo Agocs [Fri, 23 May 2014 08:27:49 +0000 (10:27 +0200)]
Keep the internal state about the bound fbo up to date

When binding an FBO directly via glBindFramebuffer, the QOpenGLContext's
internal current_fbo, that is maintained by QOpenGLFramebufferObject,
becomes out of sync. This will lead to QOpenGLFramebufferObjects thinking
they are still bound.

This fix prevents ShaderEffect items in QQuickWidget from complaining
about "'recursive' must be set to true when rendering recursively". Ideally
the entire tracking of the current fbo should be removed, since it cannot
be done robustly enough, but that will likely happen in 5.4 only.

Task-number: QTBUG-38994
Change-Id: I39015d90bb2e0985d2a084b79ffe2004a9bc9f07
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
10 years agoQNX: Fix qquicktext auto test
Bernd Weimer [Thu, 24 Apr 2014 16:21:48 +0000 (18:21 +0200)]
QNX: Fix qquicktext auto test

Change-Id: I06acf7dcd6e83c6b665163f4eb9e5ee55ecf85b2
Reviewed-by: Alan Alpert <aalpert@blackberry.com>
10 years agoFix potential null pointer dereferencing
Frederik Gladhorn [Wed, 14 May 2014 16:45:03 +0000 (18:45 +0200)]
Fix potential null pointer dereferencing

These were found by
http://www.viva64.com/en/b/025
most issues are rather cosmetic.

Change-Id: I7cc12610aae6a43d26bedb9b480863c0695ddfa3
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>