Commit Graph

13088 Commits

Author SHA1 Message Date
J-P Nurmi bb594453f9 Flickable: add horizontal/verticalOvershoot properties
[ChangeLog][QtQuick][Flickable] Added horizontalOvershoot and
verticalOvershoot properties that can be used for implementing
boundary actions and effects.

Task-number: QTBUG-38515
Change-Id: I06379348a67d03507b56788d6fc7020bbb2d375f
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
2016-12-29 11:43:59 +00:00
Liang Qi 9a272ad185 Merge remote-tracking branch 'origin/5.8' into dev
Conflicts:
	tools/qmlimportscanner/main.cpp

Change-Id: I01e17581f6691a03f83788773364d0cf96319514
2016-12-25 18:35:38 +01:00
Andy Nichols 70c6b9639c Fix Q_QUICK_SG_PROFILE macros in OpenVG renderloop
Change-Id: Ied37cc78b5338d17bb72735061be24cb20501d57
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2016-12-25 14:44:06 +00:00
Liang Qi d8a052bc6b Merge remote-tracking branch 'origin/5.8.0' into 5.8
Change-Id: I72ed8656ef03d1bc28225e2186f03620b9e119e9
2016-12-25 14:43:36 +01:00
Robin Burchell 55ba234990 quicktest: Don't warn if the root item has no size
It could be argued that all callers should be fixed, but this warning has
existed since 2012 and even our own tests do not all set sizes, so I think that
battle is a lost fight.

This helps make real problems with the tests more visible.

Change-Id: Ie29521695ef11943154dae40726d194dc72316c2
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
2016-12-22 10:24:43 +00:00
Robin Burchell fc9754e236 QQuickValueTypes: Avoid QVariant boxing (and unboxing) to convert color to string
We can maintain the spoken about compatibility without the performance penalty
by inlining what qguivariant.cpp does.

Change-Id: I95a8b8d660fb9104ae2d30d0ece943bccf169679
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Reviewed-by: Michael Brasser <michael.brasser@live.com>
2016-12-21 23:41:00 +00:00
Laszlo Agocs 9774757312 particles: Fix up 16k warnings and apply them on non-ES too
The isOpenGLES() condition is plain wrong: the code always uses ushort as
the index type.

Change-Id: Ibc5989227f61201913ff124485df4890b3490db5
Task-number: QTBUG-57515
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
2016-12-21 20:31:56 +00:00
Mitch Curtis 42c52e6f2d TestCase: make parent argument to createTemporaryObject optional
This matches the behavior seen from Component's createObject()
function.

Change-Id: I83fe73a588d04c5efd30c49059bb19e7584bef48
Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
2016-12-21 17:34:33 +00:00
Robin Burchell 312967965f Remove checksync.pl
This seems to date back to much earlier times, and does not seem to be of much
use anymore.

Change-Id: Ia0047c280102da9e85de0d10133df3135433dc45
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2016-12-21 15:36:32 +00:00
Mitch Curtis fd0c4fb24a TestCase: don't try to access destroyed temporary objects
Objects created with createTemporaryObject() and
createTemporaryQmlObject() can be destroyed manually before the test
ends. Before this patch, there would be a type error when trying to
check if the object still exists in qtest_destroyTemporaryObjects().

The error seems to stem from the fact that objects that are stored in
an array and later destroy()'d are not nullified, but rather left in
a corrupt state. See the linked bug for more information about this.

We work around this issue by checking for the existence of the
destroy() function on the object before attempting to call it.

Task-number: QTBUG-57749
Change-Id: I0f6ddd47d86af6fb87392c2992f9f6143af6aab8
Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
2016-12-21 14:09:32 +00:00
Nico Vertriest 0f911e46c5 Doc: minor grammar mistake
Change-Id: If3aebd27e886181ebe0d41532935afdfb974586c
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
2016-12-21 13:17:23 +00:00
Nico Vertriest ee3e437762 Example: corrected screenshot of the localstorage app
Was still displaying a screenshot of the previous example
\image --> \borderedimage

Change-Id: Ifb23d0ffe1216c7d79170b6bbbd7da1511afe79c
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2016-12-21 09:37:01 +00:00
Friedemann Kleint 68e23adeeb qmlimportscanner: Output the relative path of a plugin
Change 3c5e438890 enabling
using the target path version of a parent module made it harder
to determine the deployment target path from the module name.
Output the relative path in addition to remove the need to
do that in deployment tools.

Task-number: QTBUG-57494
Task-number: QTBUG-52556
Change-Id: Ib76f40f19b530f9351205df9109f2fef6191979d
Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
2016-12-20 19:20:14 +00:00
Filipe Azevedo 0d243a89ac Fix wrong grabbing behavior
QQuickWidget::grabFrameBuffer() was not polishing its items nor
syncing the scene graph compared to standard QQuickWindow::grabWindow().
This lead to QQuickWidget grabbed content to be outdated (render
the previous frame as a new frame).

Task-number: QTBUG-57596
Change-Id: I94f5e0aa5b096fb9e21259267c0e50473e8ed5bd
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2016-12-20 12:29:29 +00:00
Mitch Curtis 7b7322c497 ListView, GridView: fix missing keyNavigationEnabled property
Before this patch, this code:

import QtQuick 2.7

ListView {
    keyNavigationEnabled: true
}

Would cause this error:

"ListView.keyNavigationEnabled" is not available in QtQuick 2.7.

This is because ItemView was missing a revision:

qmlRegisterUncreatableType<QQuickItemView, 7>(
    uri, 2, 7, "ItemView", QQuickItemView::tr("ItemView is an abstract base class"));

Task-number: QTBUG-57621
Change-Id: Ia00cb7446a0d83278760f3aa361db5a864661bc6
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
2016-12-20 11:51:24 +00:00
Ulf Hermann ddba1d1281 QmlProfiler: Don't create a new event ID for each binding instance
We want the IDs to reflect the location and the type of event that is
happening. Thus all instances of a particular component should share
the same IDs for their bindings. Otherwise the aggregated views of the
QML profiler list the same locations again and again for each object.

Change-Id: I3f8a7531589b42f785e40c7c5b04b229f639d696
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2016-12-20 11:49:21 +00:00
Ulf Hermann 9727dd069f V4 Profiler: Don't delete compilation units when copying trace data
If the trace data is the only thing holding a reference to a particular
compilation unit and we are copying the last FunctionCall from that
compilationUnit onto the second last, we have to first addref() and
then release() as otherwise it might disappear in between.

Also we don't need to check m_function for null, as the ctor guarantees
it is never null.

Change-Id: I6eaf64abe71f9785d4e76e18dabd9a0676564da1
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2016-12-20 11:36:45 +00:00
Ulf Hermann c7025b456e Q_CHECK_PTR QSGGeometry allocations
We want to cleanly crash if they fail, rather than return a null
pointer from vertexData().

Change-Id: Ie88adaa9f0977c70ef4a47a59463509dcd15bdcf
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
2016-12-20 11:27:53 +00:00
Ulf Hermann 054dbb0bee Q_CHECK_PTR the result of malloc() in batch renderer
We want to cleanly crash if it fails.

Change-Id: Ib32d3d6ae0c5d58e0a954e55adca8b2c4081a7f5
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
2016-12-20 11:27:48 +00:00
Nico Vertriest 0577aa9fd2 Doc: added support for JSON in localstorage documentation
Added examples on how to store in JSON format

Change-Id: Ief58e28d42cd87cc0829e9265670e7c7bbdbeffe
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
2016-12-20 09:44:01 +00:00
Mitch Curtis c4eefa4a8d Keys: add shortcutOverride signal
This allows an item to accept the shortcutOverride event, preventing
e.g. Shortcut from stealing key events.

The original use case that prompted the creation of this patch was
using a Popup from Controls 2 to create a keyboard shortcut editor.
When the user wanted to cancel the shortcut that they were editing,
they could press escape, but Popup would grab the shortcut and close
itself. As the test case demonstrates, the same problem occurs with
the Shortcut type in Qt Quick.

[ChangeLog][QtQuick][Keys] Added shortcutOverride signal to Keys
attached object to allow prevention of e.g. Shortcut from stealing
key events.

Task-number: QTBUG-57098
Change-Id: I594e4ea17ec417d8c7d93c6cf347c1a1a2e62b93
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
2016-12-18 14:57:54 +00:00
Olivier JG 17a1c12a45 Add pressAndHoldInterval to MouseArea
Introduce pressAndHoldInterval to allow setting the pressAndHold delay
per-MouseArea.

[ChangeLog][QtQml][MouseArea] Introduce pressAndHoldInterval property,
which controls the elapsed time before pressAndHold is emitted.

Task-Id: QTBUG-47662
Change-Id: Ic2173335033a6ed0d4b652333020f030de63a8e7
Reviewed-by: Michael Brasser <michael.brasser@live.com>
2016-12-16 18:28:44 +00:00
Liang Qi 0e80d28aa5 Merge remote-tracking branch 'origin/5.8' into dev
Conflicts:
	src/plugins/qmltooling/qmldbg_debugger/qv4debugjob.cpp
	src/plugins/qmltooling/qmldbg_inspector/globalinspector.cpp
	src/plugins/qmltooling/qmldbg_nativedebugger/qqmlnativedebugservice.cpp
	src/qml/qml/qqmlimport.cpp
	src/quick/items/context2d/qquickcontext2dtexture_p.h
	tools/qmleasing/splineeditor.h

Change-Id: I8f6630fcac243824350986c8e9f4bd6483bf20b5
2016-12-14 19:01:23 +01:00
Liang Qi ed32558d62 Merge "Merge remote-tracking branch 'origin/5.8' into dev" into refs/staging/dev 2016-12-14 08:39:44 +00:00
Liang Qi 172260ebef Merge remote-tracking branch 'origin/5.8' into dev
Change-Id: I905dcd29377bf1b2e0ee086823b54277d18e78dd
2016-12-14 08:54:57 +01:00
Mitch Curtis 7aaebe5574 TestCase: add createTemporaryObject(), createTemporaryQmlObject()
A typical pattern with QML tests is to dynamically create
an item and then destroy it at the end of the test function:

TestCase {
    id: testCase
    name: "MyTest"
    when: windowShown

    function test_click() {
        var item = Qt.createQmlObject("import QtQuick 2.0; Item {}", testCase);
        verify(item);

        // Test item...

        item.destroy();
    }
}

The problem with this pattern is that any failures in the test function
will cause the call to item.destroy() to be skipped, leaving the item
hanging around in the scene until the test case has finished. This can
result in interference with future tests; for example, by blocking input
events or producing unrelated debug output that makes it difficult to
follow the code's execution.

By calling e.g. createTemporaryQmlObject() instead, the object is
guaranteed to be destroyed at the end of the test function:

TestCase {
    id: testCase
    name: "MyTest"
    when: windowShown

    function test_click() {
        var item = createTemporaryObject("import QtQuick 2.0; Item {}", testCase);
        verify(item);

        // Test item...

        // Don't need to worry about destroying "item" here.
    }
}

[ChangeLog][TestCase] Added createTemporaryObject() and
createTemporaryQmlObject() functions that can be used to ensure that
dynamically created objects are destroyed at the end of each test
function.

Change-Id: I483342052462aa86464c86bf2082892712dceb58
Task-number: QTBUG-56361
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Reviewed-by: Michael Brasser <michael.brasser@live.com>
2016-12-14 07:20:30 +00:00
Andy Nichols 9fbc5aa886 OpenVG: Fix Recursive Layers
OpenVG also needed to ping-pong between two offscreen surfaces like the
OpenGL renderer.

Change-Id: I41f671d98d361eb114be5c00ebfe62710a971aaa
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2016-12-13 15:43:32 +00:00
Andy Nichols 4cdeeea8e2 OpenVG: Use QRawFont qHash function in font cache
A qHash function was added for QRawFont, so use that instead of our own.

Change-Id: Iad8deb8a0e2a727039ec752e38e42cef2127735c
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2016-12-13 15:43:28 +00:00
Andy Nichols 0119439c9d OpenVG: Support rendering paths with non-affine transforms
The current approach to rendering paths (used by Rectangles and Glyph
nodes) does not support rendering with non-affine transformations.  That
is because OpenVG does not support passing a non-affine transformation
matrix when rendering paths.  So instead when using a non-affine
transform we will fallback to rendering to an offscreen VGImage, then
rendering that as an image which can have a perspective transform.

Change-Id: I01508bcb67b339323cb6400c7ff6d885b62c5e02
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2016-12-13 15:43:24 +00:00
Andy Nichols 3f57f2b7cc OpenVG Scenegraph Adaptation
This is an OpenVG backend for the Qt Quick 2 scenegraph.

Should be feature complete now, but there are still some issues that
could be improved in future commits:

If Rectangle nodes are rendered with a non-affine transform, they will
be rendered incorrectly.  This is because paths expect affine
transformations.

The Glyph cache is a bit cheeky in that it's caching paths, but doing
so per font size.  It shoudln't need to, but right now I've not though
up a good way of getting the transform/scale needed when rendering yet.

Change-Id: Ie3c4f2df35d14279b0f9f55e0e10a873328c025b
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
2016-12-13 15:43:15 +00:00
Nico Vertriest 16c81bb0d4 Example: correction initialization fields Header.qml
Error msg: Can't assign to existing role 'distance' of different
type [String -> Number]

Change-Id: I28842ed25a56077e52496a229294ef992406ca1d
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
2016-12-13 12:46:17 +00:00
Eskil Abrahamsen Blomfeldt 97e4d5d5ae Accept PUA characters, ZWNJ and ZWJ as input in TextInput/Edit
Private Use Area characters are quite valid input characters when used
in combination with a custom font. Joiners also serve an important language
purpose in semitic writing systems.

[ChangeLog][QtWidgets][Input] Support characters in Private Use Area, as well as
zero-width joiners and zero-width non-joiners in input in TextInput and TextEdit.

Task-number: QTBUG-42074
Task-number: QTBUG-57003
Change-Id: I4a9d6b9ea172d29375c20abfb7aebb6748c5d300
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2016-12-13 09:25:33 +00:00
Lars Knoll 798b3e6fa6 Minor optimization
Use the pre-computed hasQmlDependencies boolean in
QV4::Function instead of checking three integers.

Change-Id: Ib7194ccf9e9eb58b0d3c692388adc0cfa4cd3891
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2016-12-13 08:28:00 +00:00
Lars Knoll 180decaf11 Optimize code in instanceOf() of FunctionObject::protoForConstructor()
Saves around 1.5% instructions for the Earley Boyer benchmark

Change-Id: I552d324d5e1713f655ab9909f30c9527bb4ff777
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2016-12-13 08:27:57 +00:00
Lars Knoll 4ccba8ea25 Micro optimization
Avoid checking whether the object is a Managed if we
already know that.

Change-Id: I78234b47269d3eb1a322fdafe7654f91dae7545a
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2016-12-13 08:27:54 +00:00
Lars Knoll cf960d2ce2 Streamline code allocating MemberData
Saves around 1% in the Splay benchmark.

Change-Id: I32c8807d6688351beea2a34d945e8ef87b31355f
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2016-12-13 08:27:50 +00:00
Lars Knoll 612ad6b08d Optimize Arguments Object
Avoid creation of the Array in most cases. Fix FunctionObject::method_apply
so that it correctly recognizes this case and does the right thing.
Add a getLength() method to ArgumentsObject to speed up the lookup of that
property.

Improves the RayTrace benchmark by around 15%.

Change-Id: I53eb34a1f9515e59a191ee6f0eb23a3f4c6882d1
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2016-12-13 08:27:48 +00:00
Ulf Hermann f893d66382 Initialize idx in QV4::Lookup::indexedGetterFallback()
Change-Id: If7fe6635155937fa3e8c94ac081a267d96563859
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2016-12-12 12:40:59 +00:00
Nico Vertriest 5ac14981b0 Example: Improve the localstorage example
- insert/update/delete instead of only insert
- database connection and sql handled in Database.js

Change-Id: I513b23061e569f4511dd166ed79898db7f628139
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
2016-12-12 12:19:09 +00:00
Lars Knoll cf4e4899d2 Clean up the amount of init() methods on FunctionObject
Remove some unused ones and simplify the version taking
a QString

Change-Id: I682b4a06d4da84c2d6be7e4a9a3e831dbd11c9c4
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2016-12-11 17:00:37 +00:00
Lars Knoll 4dd13bb4c3 Get rid of SimpleScriptFunction
Now that the code paths are very similar, we can simply to the
check whether to do a fast or slow function call in
ScriptFunction::call/contruct. To make this fast, cache the
result of the required check in QV4::Function

Change-Id: I03085ca2beb83b1721b60b0d7b2ab4c9266d1e48
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2016-12-11 17:00:29 +00:00
Lars Knoll 8c322d89ee Some smaller optimizations for indexed property access
Saves around 1% of instructions on crypto.js

Change-Id: Iccef08b204e6e752d827242baf156efd9a4d58a7
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2016-12-10 11:07:02 +00:00
Lars Knoll d3bff5843b Avoid one additional check when retrieving the Heap object from a Value
Change-Id: Ief43d899e47cbfd865458a38aab8c466f6c2c76f
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2016-12-10 11:06:52 +00:00
Lars Knoll 1ababa4a75 Get rid of QQmlJavaScriptExpression::setFunctionObject()
It was only used in one place now, and the code is actually cleaner
when calling setupFunction() instead.

Change-Id: Idfe2842b81e765569f2c70f3d5dcd1862442a2ee
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2016-12-09 14:02:51 +00:00
Lars Knoll a36677bbcf Fix coding style
Change-Id: I2d6d67273533930aaa9fc61c5f4cdbef2f0bcf53
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2016-12-09 14:02:35 +00:00
Lars Knoll 4c901a6fd1 Pass a QV4::Function to the QQmlBoundSignalExpression constructor
And avoid the creation of a temporary FunctionObject

Change-Id: Idaacfd978ac4ee26960bdf185272cc44d6618a71
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2016-12-09 14:02:31 +00:00
Lars Knoll b45ebc6f45 Avoid passing a FunctionObject to QQmlBinding::create()
Like this we can remove the QQmlBinding::create() overload
that takes a FunctionObject.

Change-Id: Ib6c37395ded325e68cf0fbf3afd08fb6dd6efa3b
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2016-12-09 14:02:26 +00:00
Lars Knoll a11be5881a Directly store the referenced QV4::Function pointer in the binding function
There's no need to store a pointer to the original function here, we
can simplify the code when storing the pointer to the QV4::Function
directly.

Change-Id: I377aaecf56a0118606713c26cc7da4da001766b1
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2016-12-09 14:02:20 +00:00
Lars Knoll ef90db10a8 Fix the init() function in Heap::FunctionObject
One of the overloads took a QV4::Function * and was so far
apparently unused (as it couldn't have worked since change
3b14e2ffdd). Fix it since
it's getting some use again in the next change.

Change-Id: I3eabb332f9e3f2262a5710d43016346b7138f7e7
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2016-12-09 14:02:15 +00:00
Lars Knoll 91ac4a8d09 Don't store a source location in the QQmlBindingFunction anymore
It's not needed anymore as we now store this in the binding
directly.

Change-Id: I518c83207f219b690f31200e4d17251075bbd322
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
2016-12-09 14:02:05 +00:00