When allocating a huge item that requires it's own memory
segment, we were actually not committing enough memory from
the OS.
Fixes: QTBUG-71501
Change-Id: Ic86a648bba4d7f1eeeded78d8de0f0fc1d3a251d
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
The signature is based on [1] and [2], with an empty implementation to match the
default behavior.
This mutes the following warning when building with MSVC 2015 & 2017:
warning: C4291: 'void *operator new(::size_t,void *) throw()': no matching operator delete found; memory will not be freed if initialization throws an exception
[1] https://en.cppreference.com/w/cpp/memory/new/operator_delete (#13)
[2] http://www.cplusplus.com/reference/new/operator%20delete/ (#3)
Task-number: QTBUG-71024
Change-Id: I32f80a902672d9af27960a185a1b0c91798806c5
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Add new enum value QV4::Compiler::ContextType::ScriptImportedByQML, which
behaves exactly the same as ContextType::Global. A follow-up patch will change
the behavior slightly.
Task-number: QTBUG-69408
Change-Id: I20d27804fd1433f2229704546bcd78a0ac108c01
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
In addition, changed the \section titles to sentence case.
Change-Id: If62cc8f2a3f6a99123ccfb4d030d3f58a2fe8dea
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
It is possible to find the rules via a web search, but it can be made
easier by giving the section its own descriptive name.
Task-number: QTBUG-71505
Change-Id: Ibbf8768c7570d09b0a4bc3026632730f7e8c1c02
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
When the accumulator doesn't overlap the return value registers, we move
the accumulator value there when doing a function exit. This happens for
arm32 and arm64. This is a problem when doing a tail call: these
registers are also used to store the first two arguments for the call,
so restorating will wipe them.
Task-number: QTBUG-71212
Change-Id: Ifd82729e8741418c1b54e804724893e02bd180c7
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Elaborate a bit on some specific types, suggest the use of the overload
and omit some values that either exist only to complete the enum for API
standard purposes (NoError) or exist only for porting purposes but are
not relevant in use (EvalError).
Change-Id: I4f9cf7a4605305642fc20570a90a16f2c29d8b98
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Reviewed-by: Richard Weickelt <richard@weickelt.de>
The dependency to Qt Quick Controls 2 is now simply 'qtquickcontrols'.
Remove the dependency to old version 1 of Controls, and update linking
to Controls examples accordindly.
Task-number: QTBUG-70333
Change-Id: I2f42031ab8aea90332b8b68537654ea761e44811
Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
Serves to simplify porting from QtScript by replacing
QScriptContext::Error and QScriptContext::throwError().
Change-Id: I4bfe404c358c50aaf3b5469a4304fec97552bf24
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Emphasize that the model is the same as with C++ (or QML for that
matter), in the sense that only trusted code should be evaluated.
Change-Id: Idd377af76ac7ebeb9f92a9ccc359c612f73e8bef
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Previously, each time a new touchpoint is pressed, we would purposely
forget which touchpoint was acting as the mouse, as part of "starting
over" with event delivery. Conceptually "starting over" ought to mean
as freshly as possible; but in practice, if a user was using one finger
to interact with some mouse-only Item, and then presses a second finger
(whether intentionally or not), (s)he doesn't want the first interaction
to immediately end. The multi-finger DragHandler must be able to take
over the grab from the Item which already had the grab; but it uses
a passive grab in the meantime to track the movement, and normally
takes over the exclusive grab only when its preconditions are met:
the point has to move past the drag threshold. So we can wait until
then to reset the touchMouseId.
The concrete use cases are: double-tapping a map is supposed to zoom
in, even if there is a MouseArea on top. And, while dragging a Slider
inside a Flickable, you should be able to start dragging the Flickable
with a second finger. In the first case the issue was that the
MouseArea could grab while handling the synth-event, thus setting
touchMouseId; then touchMouseId was immediately reset again while
handling the second touchpoint, so the second touchpoint would also be
offered as a synth-mouse event to various items. But while fixing
that, we have to avoid this issue in the Slider-in-Flickable case:
when the first touch press is delivered, Flickable takes the exclusive
grab temporarily; after moving the touchpoint, the Slider's
DragHandler steals the exclusive grab. Then we try to deliver the
second touchpoint press: at this time, we don't want touchMouseId to
be set, because we want to be able to deliver synth-mouse events for
the second point so that Flickable can grab that one. So it must be
that when DragHandler steals the grab, we can reset touchMouseId,
because the only reason it was set was that Flickable had the grab.
This result is achieved by having QQuickItem::touchUngrabEvent()
call a new QQuickWindowPrivate::cancelTouchMouseSynthesis() function.
It was already a good idea to have such a function since we always
reset touchMouseId and touchMouseDevice at the same time.
Also modify the docs to remind users that when subclassing
QQuickItem and overriding mouseUngrabEvent() or touchUngrabEvent()
they should call the base class implementation, to avoid bypassing
this new functionality.
Fixes: QTBUG-70998
Change-Id: I02894971e9047d4fa7ac9d062d6714c9183a8058
Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
QML code that imports any previous QtQuick version (e.g. 2.11) and connects to
any of the four 'at boundary' properties (atXEnd, atXBeginning, atYEnd and
atYBeginning) change notifier (e.g. atXEndChanged) stop working because the new
signals available only with new import, but the older import has no idea that
it could connect to the older notifier (isAtBoundaryChanged).
Remove revision number from the notifiers of the four 'at boundary' properties
to mostly fix backward compatibility until a better solution is available.
Fixes: QTBUG-71243
Change-Id: I9b4c944c62e0c6c83ceed765b7cd99519e9cd109
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
The properties used to have a single notifier that name is different from
the properties names. QML Engine always connects a handler to signal, if it
exists and only if there is no such signal then it lookup for a property
notifier. In commit e92f76cf9e we introduced
new signals that match the names of the two property changes handlers, but
the signals are not available on older import.
Remove revision number from the notifiers of Text.contentWidth/contentHeight
to fix backward compatibility until a better solution (such as extra engine
logic like "if a signal that matches the handler is not available then check
if there is a way to connect to a property notifier that matches the handler"
Fixes: QTBUG-71247
Change-Id: I11fb6230d85218ef437816c60c8147b953d47241
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
With 9 states the benchmark showed
QSet 0.00041 ms
QVector 0.00016 ms
QVLA 0.00015 ms
Change-Id: Ie2de19bd8281b7fddd9ad4246035dcd0f3483102
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
Add a mesh type for use with ShaderEffect which loads the geometry from
an .obj file.
Change-Id: I53c9149fc56cdab4a36fccc087abf54a6b50f42f
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
Permit enums from sub-classes to overwrite enums from super-classes, but
keep warnings about clashes within a class, provided that the values
differ. The last condition relates to the declaration of enums and a
subsequent declaration of Q_FLAGS, which appear to have the same keys
and values in the meta-object system.
Task-number: QTBUG-71184
Change-Id: I2a00dc90e3714fc4c6fe8add5a6268b88bb9e745
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Rainer Keller <Rainer.Keller@qt.io>
Otherwise it is silently ignored and given that we change
states by name i think it's a thing the user would want
to know that he made such a mistake, i know i would
since i just lost some time figuring out why changes i made
to a state didn't apply and it was because i had a duplicate
state name in a long states definition
Change-Id: I342e44829f7d32daf6eed0edad33f5b7a42ff5bf
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Commit 939014cb9c improved performance of
property lookups beyond the scope object, with the unfortunate
side-effect that the previously polymorphic lookup of methods broke.
Fix this by moving the handling to the caller side and falling back to
the string lookup for functions.
Fixes: QTBUG-71204
Change-Id: I2d9924034a9c14e7d161fa49d51b1f876ab5bc0f
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Try to import let/const variables from JS scripts into QML.
Task-number: QTBUG-69408
Change-Id: Ie58cbc8cd9f8a47f5a077f95b07b5f9e1524707a
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Before, it would assume that StaticText was the role if the item
could be cast to a QQuickText. It should only do this if the role
is not explicitly set, in case it is not really StaticText in the
attached property.
Change-Id: I800810f1347fc9aa412c4ca5d180f78d27a89b38
Reviewed-by: Andre de la Rocha <andre.rocha@qt.io>
That is, initialize variables in the private class where they are
defined, and move the padding warning out of that section (now it
says the whole class is padded to the alignment boundary, but there's
not much we can do about that).
Change-Id: I63101b6a837c69265c73b4c6001f1901fcaa8572
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
While the view is flicking, if the content is updated by
a model reset, it gets very confused and creates many delegates
that won't be shown inside the visible area.
Now we cancel any active flicking before the model reset is handled.
Fixes: QTBUG-70742
Change-Id: I6f7aa368b760a00d08c540f3963c32e1e174a908
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
This is needed to fix a bug in Qt Quick Controls 2. We need
to know if items within a Menu were created by Instantiator
so that we don't try to recreate them.
Task-number: QTBUG-71066
Change-Id: Iaedaea2be6bf4f70c2c7b6fb37871d5537328e96
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
It's given a list of touchpoint IDs, which normally are from the same
event, so we should not need to find the corresponding device and its
event repeatedly.
Change-Id: I65ce120c50251d23b1300b79b9372e8e54e53741
Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
We can only have up to 65536/4 tiles since we are indexing with
quint16.
Task-number: QTBUG-58924
Change-Id: I55b5a9f2a3fb4582e327859482dd978b61b21e4e
Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
* Use velocity to prefer snapping in the active direction.
* Calculate snap based on where the item is, rather than where
the section is.
Change-Id: I2531501dbe0a58f26f20bc3e719e435185e047a5
Task-number: QTBUG-67051
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Ensure we rebuild the table when the model emits 'layoutChanged'.
Fixes: QTBUG-71140
Change-Id: I70dac897830bf5a12ae6987920e388743fd358a1
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
There is no reason for QQmlAdaptorModel to return the
wrong column count to the view. For models that are not
QAIM, the accessor that wraps the model will report the
column count to be 1 anyway. The same is also true
for QAbstractListModel.
Change-Id: Ia259b044201d76743e5f43d9f0999d3848912075
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
It's common for users to bind to these properties and think that it's a
bug that it doesn't work, so we should make the note in the docs more
strongly worded and elaborate a bit.
Change-Id: I82c8d5644ed81cc616a3035f489344a491ea5a66
Reviewed-by: Andy Shaw <andy.shaw@qt.io>
Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
Makes what the renderer is expected to do more well-defined, and makes
the software and OpenGL backend agree in the rendering of the QML
lancelot tests.
Change-Id: I3991ec06e3b4b5f1713e224bb3b7d57e8f951ab4
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Andy Nichols <andy.nichols@qt.io>
The example is actually not very easy to build, and arguably too
complex for a 'getting started' example. qtdoc commit 1df7011858
therefore replaced it by the alarms example in the documentation.
Task-number: QTBUG-66064
Change-Id: I2f2776c649410575aef71948f64b358d60233022
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Reviewed-by: Nico Vertriest <nico.vertriest@qt.io>
For example: 'for (foo() in something) {}' is not valid: a call
expression is not an lvalue.
Task-number: QTBUG-71086
Change-Id: Ia1498cd38526b073afb8e4524ceaea14dca3d65f
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Inside method_qtTr, the filename is assumed to be a (correct) URL. When
a (normalized) path with a windows drive letter is passed to
QJSEngine::evaluate, the URL will have a scheme that is the drive
letter. We cannot correct this in method_qtTr, because at that point we
might get in files that do not come from the file system, but through
actual URLs. The place where we know for sure that the filename is a
real file name and not a URL, is in QJSEngine::evaluate. So at that
point, make sure that the filename is a valid URL.
Task-number: QTBUG-70425
Change-Id: Ia41859c4024ac46e6f8c3d96057a5dffdecd8f56
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
There is a {{Q_UNREACHABLE}} right after it.
Change-Id: Id69fb1403a5f99912e6fbcb4a397a78a9d6948d7
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>