[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>
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>
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>
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>
This matches the behavior seen from Component's createObject()
function.
Change-Id: I83fe73a588d04c5efd30c49059bb19e7584bef48
Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
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>
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>
Was still displaying a screenshot of the previous example
\image --> \borderedimage
Change-Id: Ifb23d0ffe1216c7d79170b6bbbd7da1511afe79c
Reviewed-by: Topi Reiniö <topi.reinio@qt.io>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
Saves around 1.5% instructions for the Earley Boyer benchmark
Change-Id: I552d324d5e1713f655ab9909f30c9527bb4ff777
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Avoid checking whether the object is a Managed if we
already know that.
Change-Id: I78234b47269d3eb1a322fdafe7654f91dae7545a
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
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>
- 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>
Remove some unused ones and simplify the version taking
a QString
Change-Id: I682b4a06d4da84c2d6be7e4a9a3e831dbd11c9c4
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
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>
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>
And avoid the creation of a temporary FunctionObject
Change-Id: Idaacfd978ac4ee26960bdf185272cc44d6618a71
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Like this we can remove the QQmlBinding::create() overload
that takes a FunctionObject.
Change-Id: Ib6c37395ded325e68cf0fbf3afd08fb6dd6efa3b
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
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>
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>
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>