Add Window attached property on Item

An Item sometimes needs to know a few things about the window
in which it is being displayed; this attached property can expose
them without needing to go up the heirarchy to find the window.
Instead of adding the QQuickWindow pointer as a property on Item
as in 8f49f50a169db85401eb37daf4fe3a0fc3280603, having an attached
property means that it will not be found by introspection; and
it solves the problem that Window is in the QtQuick.Window module:
you must import the module to use the attached property, instead
of having access to a pointer whose type might not be defined
if you didn't import it.  The Window attached property is created
on-demand (so the memory cost adds up if you use it in too many
places); the tradeoff is that it can exist even when the item
is not yet being shown in a window, so bindings at startup work.
The API is purposely incomplete compared to that in QQuickWindow
so that we can introduce what is needed in a controlled fasion
over time.  For now we know of use cases for visibility, active
and activeFocusItem.

[ChangeLog][QtQuick][Window] Added Item.Window attached property

Change-Id: I649404cbd1383326678aa2144f790b2f2542dbbc
Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
Do not emit Timer.onTriggered while executing arbitrary JS code

Task-number: QTBUG-39371
Change-Id: Ibf232560918d30961bd979e14aac3ae7d2f264eb
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
Reviewed-by: Martin Jones <martin.jones@jollamobile.com>
Say hello to the Declarative State Machine Framework

The Declarative State Machine Framework extends Qt's State Machine
Framework (QSM) into QML to provide types for creating and executing
state graphs in QML. This gives you the power of deterministic state
machines, but declaratively and without having to write all of the
boilerplate code. It is an alternative to the existing QML State type,
intended for more complex models.

[ChangeLog][QtQML] The Declarative State Machine Framework extends Qt's
State Machine Framework (QSM) into QML. This gives you the power of
deterministic state machines, but declaratively.

Change-Id: I02390ba7f1baed50935364530925bd75087299cb
Reviewed-by: Sebastian Sauer <sebastian.sauer@kdab.com>
Reviewed-by: BogDan Vatra <bogdan@kde.org>
Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
Make the QtQuick window surface type configurable

The default remains OpenGLSurface.

Change-Id: I96b400b7aa9c2b0435ea0614598e1b1f32b6d6b2
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Allow re-implementing renderScene

Change-Id: Ic8e5e9ebbc5bbd1a7950807d6921304482cbde68
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Cleanup: Remove remainders of dirty state usage

Change-Id: I4c379562af27a7eb2a47aee21090eff84fe84c55
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Improve support for node iteration in the internal API

Added a new node visitor that allows easier traversal of the specialized
node types such as the image or rectangle nodes.

Change-Id: I45a7d3e1513b4a4db9d07998a6bcee9eba34044e
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Protect against crashes with invalid openglContext()

1) Don't fail the assertion in the animator jobs if we don't have a context
2) Delegate the opengl context check in QQuickWindow::createTextureFromImage
   to the QSGContext

Change-Id: I1b248895dcd6db406f1af8866fd0052dd7564899
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Added interface for the QStyle rendering in QtQuick Controls

This allows a scene graph backend to customize the style rendering

Change-Id: I6048df47ed3705d81140d63a21257f704a0e0a82
Reviewed-by: Lars Knoll <lars.knoll@digia.com>