We know that some run-time functions won't thrown an exception, so this
patch annotates them with a tricked NoThrowContext* instead of
ExecutionContext*, which allows the masm isel to detect calls to them
and avoid generating the exception handling checks after the call.
Change-Id: Ida1c9497edda14f26e1d6389b0144f6abeeba654
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
We only need to save it when the line number changes, not for each and every
call.
Change-Id: I1a6fdf97abd3dd654bbd97d2a99cd09e9c20f64f
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Add the name of the property to the generated IR function ("expression for x")
to make it easier to debug.
Change-Id: If35f42764774e6d7f40d3bf080e1fbdb12321ed5
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
It gives different error message based on the case sensitivity of
the file system on Mac.
Task-number: QTBUG-32652
Change-Id: I52415126e63978c9f80b7652e0116e0e07703fd8
Reviewed-by: Liang Qi <liang.qi@digia.com>
Ref change: cfa85c7 (qtbase)
Implement QQuickWindowPrivate::clearFocus()
to enable platform plugins to remove focus from the
focus object when the virtual keyboard closes.
On mobile platforms line edits etc are not supposed to
be drawn with focus and blinking cursors unless the
virtual keyboard (or another keyboard) is open. With the
new virtual QWindowPrivate::clearFocus() the
platforms can remove focus without deactivating the
whole window.
The old implementation on iOS deactivated the whole window
when the keyboard was closed. But this was unfortunate,
especially in QtQuick, since a qquicktextinput would
not get active focus unless the window was active. But
the platform would not activate the window unless the
keybaord was open. So, a classic chicken - egg problem.
Change-Id: I62e652a3cd85f1313713c5d086d9537cc2f9826f
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Make sure we have allocated enough storage for
properties before writing them.
Change-Id: I3232ad1c4f17c21b48e8b444dc9ca604745dc799
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Also fix up the generated string for the reference error.
Change-Id: I327a8eb682017297a799f8bae650267727039616
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
The QML code looks like this:
MyRevisionedClass {
prop1: prop2
}
and MyRevisionedClass is C++ based. We need to return an initialized value when
reading prop2.
Change-Id: I33792c04aa1ba0d8e38c1351b8fb4de7abbe4891
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
It would only set focus which works fine as long as the target is in the
same FocusScope. But as user one would expect that the target actually
receives the focus. Using forceActiveFocus is sensible since the current
item needs to have the "activeFocus" anyway and within the same focus
scope setting focus=true on another item will take away the active
focus.
Task-number: QTBUG-34209
Change-Id: I824f15fd0d4d42eb2f0c6c1b02660f2e007b3362
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Reviewed-by: Alan Alpert (Personal) <416365416c@gmail.com>
This API is primarily a hook which is needed by the Qt WebEngine to
set up sharing with the scene graph's OpenGL contexts.
Change-Id: I5bb03abd9ab99f502db8e413fe838a8b30365b8d
Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
When one item in a batch of other translucent items would
change opacity, we need to rebuild batches under the current
root as all items in a batch are expected to have the same
opacity.
Task-number: QTBUG-34311
Change-Id: I2b9db19f05bd3a82be65cfa8a91e9398e8d58d0f
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
QQmlComponent::setData does not perform any URL processing. Consequently
when using that function we need to 'normalize' the URLs ourselves to
ensure that the engine finds them acceptable.
Task-number: QTBUG-34301
Change-Id: Ia0f3a51129423020f7e4d7003ca356af3f89b441
Reviewed-by: Antti Piira <apiira@blackberry.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
The QQmlContextData stores the JS objects of imported scripts in a
QList<PersistentValue>. Instead of indexing into that list, this patch changes
ctxt->importedScripts to be a JavaScript array, that in the IR we can index via
subscript.
Change-Id: Ie2c35fb5294a20a0b7084bb51d19671a27195fec
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
QV4::String can now either hold a pointer to a QStringData,
or a pair of pointers to a left and right string. This
reduces the overhead of an addition to allocating a new
GC'ed object.
To avoid huge chains of linked strings, we use a depth counter,
and flatten the string once the depth reaches 16.
Change-Id: If7192b8a9f67f0e36a9a8ea34a156c5222f127f4
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Simplify code slightly and allow the compiler to
generate more efficient code.
Change-Id: I2fbb060dc8969cf17813157d9c15e088a61e5de4
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
We can resolve the use of names that refer to imported scripts at compile
time and load them at run-time by index through context->importedScripts.
Change-Id: I681b19e7d68dbf3b9a68af00b4cea2a9254c2d78
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
After the resolution of a property, we can set it by index at run-time instead
of via name resolution.
Change-Id: I479599dabe343cf9e6582dcda12291aebfcce418
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
This code was a leftover from before we started sending notifications
for changes in QSGNode::isSubtreeBlocked. It would accumulate opacity
and return blocked for nested blocks, even when
QSGNode::isSubtreeBlocked would return non-blocked. The result is that
the renderer would not respond correctly to DirtySubtreeBlocked and
would not add/remove shadow nodes for that subtree.
Change-Id: Iea83e89c6da4d0a3cb3ee7ea74cd96b7cda9fd6d
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
Mingw.org (gcc 4.7.2) does not provide an implementation of
localtime_r. Anyhow, the localtime() in the Windows runtime
is thread safe, so we can use localtime() instead.
Change-Id: I387e0dcc22e519777fa9ceb9ad6a8b030d0438c1
Task-number: QTBUG-34038
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
... by mapping the property type to the IR type if possible. In an expression
like parent.width * 0.5 this avoids a to-double conversion for parent.width but
instead we can rely on the result of the property read for the width property
to always be a double.
Unfortunately integer propertyes are currently not propagated, because upon
assignment from a double we would do the ECMAScript compliant truncation while
QML actually expects a round to happen. This needs to be solved separately.
Change-Id: I9c8f58416201d406e6e11d157cae12a686b774e5
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
...when the base is a QObject property itself or an ID referenced object.
This patch resolves for example the width property in a parent.width expression
to be a per-index lookup at run-time. That requires the base ("parent") however
to be a final property or come from an object where expected revision is known, i.e.
a QML imported object (scope or context).
Change-Id: Iaa1f57ace452da5e059c1d4e63b52b316e1a6b08
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Layout is taller and less wide, by putting weight, style and sample
below the other list views. It's more resolution-independent and
looks reasonable by default on Android. Renamed Others to Style.
Made column headings bold. Text in selected ListItem delegates
are in a contrasting color. Delegates are taller so they are
easier to select by touch.
Task-number: QTBUG-34157
Change-Id: Ia0c96c8556835d689d3c2fd5e2c0d34e421aff76
Reviewed-by: Liang Qi <liang.qi@digia.com>
* Move the debugger agent to the same thread as the debug service. It cannot
live in the gui thread where it is created.
* When the debugger is paused, resume immediately for now. This should be removed
once the "counter" part propertly responds to V4_BREAK and resumes us through
a separate message.
Change-Id: I64ea5a4e95c07763dd87736fbc72fc8927a669e3
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
The default implementation of QSGShaderMaterial::vertexShader() and
fragmentShader() now loads the GLSL source from a list of source files
that can be specified via the setShaderSourceFile() or
setShaderSourceFiles() functions.
Multiple shader source files for each shader stage are supported. Each
source file will be read in the order specified and concatenated
together before being compiled.
The other places where Qt Quick 2 loads shader source code have
been adapted to use the new QSGShaderSourceBuilder, which is also
used internally by QSGMaterial.
This puts Qt Quick 2 into a better state ready to support OpenGL
core profile and to load different shaders based upon OpenGL version,
profile, GPU vendor, platform, etc.
Change-Id: I1a66213c2ce788413168eb48c7bc5317e61988a2
Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
This avoids having to do a string lookup for ids and in the import cache at
run-time, before we can do a string hash lookup in the property cache. Instead
we resolve final properties in the context and scope object at compile time and
look them up at run-time using their index instead. The dependencies to these
properties are also tracked separately and recorded in the compiled data.
This is merely the initial patch. There's a lot left to do, such as having
specialized getter and setters for specific property types. Setters are missing
altogether right now and will fall back to name lookup.
Change-Id: If3cb4e7c9454ef4850a615f0935b311c9395b165
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
This issue was discovered while running the QtQuick Controls auto-tests
in valgrind. The issue is that the QObject based property in the VME meta
object is deleted as a child, after its parent (that had the property)
was deleted. At that point it's not safe anymore to emit the notify signal
in the already-deleted object (m_target->object).
Change-Id: I54e81dfedb6e712b8cbf182a72254e33e82910e3
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
QQuickPixmap use should be done on the main thread, if not it can lead
to an exception when creating the file loading thread (owned by the
engine).
Change-Id: Id59cec4312ecdee537dcba85778bd90ea4433b2e
Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
Make spacing of controls consistent with the other dialogs. It was
too conservative for high-resolution displays anyway.
Change-Id: I095d0c8f136b6692cc9c4ac01db748dbef205867
Reviewed-by: Liang Qi <liang.qi@digia.com>
On mobile platforms the dialog can have more buttons than horizontal
space to show them, so it's better to let them wrap around to ensure
they are all visible. But Flow does not try to maximize its
implicitWidth, so we have to calculate it at the right time before
showing the dialog.
Change-Id: I5667aa90539f291ae040f2e125abc2dea968f9ac
Reviewed-by: Liang Qi <liang.qi@digia.com>
This is the wrapper for dialogs on platforms that don't have top-level
windows. Mouse events over any unused area in the dialog would fall
through to the surrounding mouse area and close the dialog. Now they
don't. Clipping is enabled to ensure that dialog contents don't
overflow the "window" frame.
Change-Id: Ia3c0ae44bb47d46981daac9febd4cc93228dd20f
Reviewed-by: Liang Qi <liang.qi@digia.com>
The Back button on Android should close the dialog, but there is a bug
that Qt only receives the release, not the press. Otherwise Esc should
do the same, Enter should accept, it should be possible to copy the
text from the MessageDialog, copy colors to and from the ColorDialog,
etc.
Change-Id: Ib4d4c58cde9f4bb00ce3d46e2f9ea1aad9d52bb0
Reviewed-by: Liang Qi <liang.qi@digia.com>
For subclasses that adds menubars, toolbars etc, the plan is to expose
another item (the item excluding the menubars, toolbars) as a
contentItem.
Task-number: QTBUG-32443
Change-Id: Id12fc50efde3fdf363e4528dd5de17177ddef24f
Reviewed-by: Alan Alpert (Personal) <416365416c@gmail.com>
Also clean up and compile the repository with exceptions
disabled again.
Change-Id: I653ae89353284b2f4ab884384f8ea6a5d100785d
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Implement lookup calls for the interpreter. This
significantly reduces overhead by avoiding repeated
name lookups on the same object type.
This doubles the speed of quite a few of the v8
benchmarks, and brings the interpreter up to close
to 40% of the speed of the JIT.
Change-Id: Ie8c2f5b1ca71a7329bc643c3d2158a6301a392ed
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Optimize unops for ints/bools and add some
special binops where one side is constant.
Change-Id: I4f5639e36458560e5614371733abaafd94909ab1
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
See the task for the full reasoning behind this patch.
The threaded renderloop has been refactored to have one window per
thread. This is mostly a simplification of the current code path where
for loops over multiple windows are turned into if (window).
The QSGContext has been split into two classes, QSGRenderContext
for which there is one per OpenGLContext.
The rest of the patch is name changes and a couple of cleanups
in the hopes of simplifying this change.
Task-number: QTBUG-33993
Change-Id: I31c81f9694d7da7474a72333169be38de62613c4
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
The error was that app can be uninitialized if the switch goes into
the default branch.
Change-Id: Ic690e1dd257cf88ee04d019b5b81121cecb48564
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
Test was only passing the time to the format function, thinking it was
the only part under test, but the date is also relevant due to DST being
part of the formatted output.
Task-number: QTBUG-34406
Change-Id: I1f542b58907281632ee3c96b9b5b38426936953e
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Move parameters global to the entire QML file to the constructor, pass
component/context specific parameters to the generate function.
Change-Id: I6c3ab41b3bab19b066bbe20f971c5cafaeb70b98
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Before all new objects were pushed into the end of QVector,
i.e. if item model changes object with low index newly created object
will be added like it has big index. So, removing objects from
instantiator was buggy.
Task-number: QTBUG-33847.
Change-Id: I49fba53a40fce72060b629f737c10b525c67cc86
Reviewed-by: Alan Alpert (Personal) <416365416c@gmail.com>
Reviewed-by: J-P Nurmi <jpnurmi@digia.com>