In qtdeclarative/tests/manual/touch/flicktext.qml it was already clear
that the moving/movingVertically/Horizontally properties did not revert
to false after a trackpad flick on OS X. It turns out that the failure
to emit the movementEnded signal also caused a scrolling bug in ListView.
QQuickFlickable::wheelEvent() looks at event->phase(), but ScrollEnd is not
absolute: on OS X with a bluetooth trackpad, it happens once when the user's
fingers are lifted, then the "momentum" events occur with ScrollUpdate, and
then ScrollEnd happens again at the end of the momentum phase. But if the
user's fingers come to rest before being lifted, to stop the momentum, then
the ScrollEnd phase happens only once, and that's actually the end of
scrolling, flicking and movement, all at once. The events don't seem to
provide enough information to disambiguate these two cases; but if ScrollEnd
phase occurs, and then we don't receive any more events within some short
time interval, we can be pretty sure the scrolling really ended. So, use
a timer to check whether any more events have been received, a little later
after the ScrollEnd phase.
The movementEnded signal can now be emitted for several reasons: the
regular timeline ended movement, the velocityTimeline ended movement,
or the movementEndingTimer sent an event.
Also, when flicking with a physical mouse wheel, flickStarted was emitted
multiple times; now it will be emitted only once.
Task-number: QTBUG-47151
Change-Id: I534e99befbd9bf6af24c4ebdca73dd21964f1063
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
Make it possible to pass URLs on the command line. If no argument is
given and the pictures location as returned by QStandardPaths exists
and has contents, show it, Otherwise, show the file dialog as was before.
Set context properties containing pictures location, image name filters
and initial URL.
Derive the image filter string from QImageReader/QMimeDatabase.
Change-Id: I89bdff27416bf8ef725aa4e17853b2f634cf059b
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
Every getItem() call increases the reference count. If getItem() was
called on an item that was already managed, we must pair it with a call
to releaseItem() in order to keep the reference count in sync.
Change-Id: I897d19c77bc0c58717065cbe925c45a14153ad0b
Task-number: QTBUG-50655
Reviewed-by: Mitch Curtis <mitch.curtis@theqtcompany.com>
Don't initiate a drag and drop if the event was rejected.
What happens is:
QQuickDropArea::dragEnterEvent() sets d->containsDrag = true
QQuickDropArea::dragLeaveEvent() sets d->containsDrag = false
HOWEVER, when the enter event is rejected, the leave event is
never delivered, and the drop area remains blocked because it
thinks the first drag action is not done yet.
Change-Id: I74c53fbe778c954e4aa2f22f393318c4938a5afe
Task-number: QTBUG-39453
Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
Some (?) pre C++11 compilers are not able to resolve template arguments
for std::find_if when the predicates are local to the function.
Change-Id: I1e5c4adc3409bd32081ddedff158ab9dcc2eaa9a
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
The example used the font "Open Sans" which is only available
on UNIX platforms and causes it to look baroque on WinRT.
Add a settings file specifying the font and override via file
selector.
Change-Id: I1a9284d928ac57289d75b5fb9477849ac518787b
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
When reading a propety from a QGadget or a QObject, the values are
stored in a QVariant and later unwrapped/converted to the correct
JavaScript type. However, if the property value is a QVariant, it does
not need to wrap it (again) in a QVariant.
Change-Id: I633d3194f82b6032fc15d9994c4dee5e5609fd21
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
This leads to wrong behavior in some cases, where we reject
valid revisions, and there is probably no case, where this could
lead to a conflict for the user of the API.
Change-Id: I1614332cf4c07c6a227551612331dd69b2ae71f3
Task-number: QTBUG-40043
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
This makes only non-functional changes so the next patch can make
mostly functional changes.
QQuickText: rename q_imageLoaded() to q_updateLayout().
Says what it does, not when it is called.
QQuickWindow: split QQuickWindow::forcePolish() into
QQuickWindow::handleScreenChanged() and
QQuickWindowPrivate::forcePolish().
Change-Id: Ief2ae30cd9f27ee8083b2c75765fb5278bde5ea8
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
This has been commented out since the initial introduction in 2011. I doubt it's
actually useful anymore, and if it is, it's in git history regardless.
Change-Id: Ife36f423a21d4b12ebca154b4ad14848844e4eef
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
Don't delete singletons objects that are created only from C++ and
have explicitSetObjectOwnership flag set, explicitSetObjectOwnership
flag is set only by QQmlEngine::setObjectOwnership.
Task-number: QTBUG-49865
Change-Id: I0ef658c2094e67b5cd9a1585e273144dfcee736a
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
JavaScript files loaded by the Qt.include() function did not get
passed through the QQmlEngine's URL interceptor, while those loaded
by import statements did.
Now both include variants have the resolved URL passed through
the interceptor, e.g. an installed QQmlFileSelector
Task-number: QTBUG-50483
Change-Id: Ife75e6b644687f3fb04048a311e570cdcbab8c6d
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Delay freeing QObjectWrapper Value to MemoryManager::sweep() to make sure
we can destroy all QObjectWrapper objects.
We also keep track of QObjectWrapper in QV4::Heap::ModelObject to make
sure we destory them in QV4::MemoryManager::sweep()
Change-Id: I3a8a3b07faab1f88c2eb746f68aa8d9584b40026
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
These are exception safe (not that that matters greatly here) but more
importantly idiot-proof. A number of tests weren't cleaning up windows properly
before.
Change-Id: Ieca676c8eea54d3c2a1d9e4738133acdb2b370fe
Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
We don't need to pass debuggers and engines around as the data
collector already has all the necessary information. Also, the
exception collect job is only used in the test case, so we don't
need to define it in the collector.
Change-Id: I3197dd5c2d99e95465aa787097c6f8bf8aee794e
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
To avoid interaction with the engine from the debugger thread we
move the value lookup functionality into the data collector, and
drop the RefHolder. Also, we define some more debugger jobs to
move the work the request handlers do into the GUI thread.
Task-number: QTBUG-50481
Change-Id: Ia73ebd01e715f13110ef010a766e9b0a1e202df9
Reviewed-by: Nils Jeisecke <jeisecke@saltation.de>
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
When isTabFence is set to true and no children.
Task-number: QTBUG-50516
Change-Id: I8430336fde7ab041797f8f9d9dfe5b9d56fecddd
Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
qmlplugindump used to import QtQuick, therefore skipping all QtQuick
types when dumping. Now that it imports only Qt, it is no longer the
case, and all QtQuick types would be dumped in the module's qmltypes
file. It can be avoided by specifyng 'QtQuick' as dependency in qmldir
file or in a json file passed as -dependencies option. It seems however
that people are not used to that, so in order to restore the old
behavior, the QtQuick dependency is automatically added when the
dependency list is empty.
Change-Id: I5fb2e57893607a877d284767b3fd09159b45ff42
Reviewed-by: Thomas Hartmann <Thomas.Hartmann@theqtcompany.com>
QSGDefaultImageNode::preprocess() always sets the
geometry to dirty even if no new texture was grabbed.
Change-Id: Ifb6ce160854aa0a5b9e0f87fbf517b21e86e0ade
Task-number: QTBUG-49904
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
Added a check on meta object revisions, in order to verify regressions
on QTBUG-49284.
Change-Id: I616875157d2b36db0a984338ba9d6a7c5a83a240
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
That commit changed qqmljsgrammar.cpp, which turns out to be a generated file.
Therefore it's important to also make the modification to the original grammar
file, to ensure that future re-generations of the file contain the new code.
Change-Id: Id913b29e4a70bfa0c2786073c46dcc206c28b6ee
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
Since it has a lot of table driven tests, if we reuse the window like the other
table driven tests do, the total time is a lot lower (~2 seconds lower for just
this test for me).
Change-Id: I01ce38442f70d592d70ba584df3e0783956ebeaf
Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
When using an overlaid header or footer, we must adjust the position we come up
with by the appropriate size in order to end up at the correct place.
Change-Id: I218b9aef7fdf37f56ffb63dc395f97045b55a186
Task-number: QTBUG-50097
Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
We're hitting crash problems in controls2 auto tests where
QQuickAnimatorController::stopProxyJobs() contains dangling pointers
in m_proxiesToStop. The window for these proxy jobs had been already
reset, so the destructor of QQuickAnimatorProxyJob was not removing
it from QQuickAnimatorController's m_proxiesToStop.
Change-Id: I89e3b174c86dfb217a555f07ee1ce4c42cbcf204
Reviewed-by: Mitch Curtis <mitch.curtis@theqtcompany.com>
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
All identifiers starting with an underscore and a capital letter are
reserved to the compiler and must never be used by the user code. Try to
find a better name or, in the worst case, move the underscore to the
last position in these identifiers.
See commit cf63c63d558227fdbef09699c261560e7474f5ea in qtbase for a case
of such an identifier causing a build breakage when the compiler began
treating it specially (it was _Nullable).
Change-Id: I1d0f78915b5942aab07cffff140f9f39c29f0fdf
Reviewed-by: Erik Verbruggen <erik.verbruggen@theqtcompany.com>
When building QtQml without having python in PATH the build system will
generate an empty RegExpJitTables.h. The linking will then fail because
of unresolved external symbols.
Task-number: QTBUG-47193
Change-Id: I39abf44bf30abfb4a3209713a1fb07faff7ead63
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
QSGTextureProvider::texture() was getting a warning from qdoc because
it didn't find an exact match for its signature: the doc lacked const.
Ditch some spurious semicolons while we're about it.
Change-Id: I785ae8b8d46c839a1e29339284834a8b8e44bffe
Reviewed-by: Topi Reiniö <topi.reinio@theqtcompany.com>
This prevents extra mallocs in nearly all cases, because the number of
incoming edges is not that big. The outgoing edge count has a maximum of
two.
Change-Id: I89195809952ce6087c5af51d717a4c2d8ac6b853
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
DocumentImpl (the root of all evil) inherits QQmlRefCount, thus, it has an
initial refcount of 1. We correctly released the initial ref in the case of
error, but if there is no error, we don't: we pass it over to v4 using class
Node which (in Node::Node) increments the refcount again.
When Node is later on collected by the GC, the document's refcount is never
decreased past the initial ref, thus, not deleted.
Task-number: QTBUG-50231
Change-Id: Icefe4391a785c95cb8900219be8ba71f9c53785f
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
A bit faster, not that this is the most important case for it.
Change-Id: I3e50bd4a45d2b60c105a9315ccf0b2c34502cb8d
Reviewed-by: Michael Brasser <michael.brasser@live.com>
Fix broken value changed logic for types implemented
through the ValueTypeProvider interface (QtQuick and Qt3d).
It affects vector2d, vector3d, ...
The signal was not emitted for the cases where the new value
was equal to the default value of a given type.
Also add a unit test to cover this area.
Change-Id: I9491b0462c78fecc4c704ea36921611c1bd6b2ee
Task-number: QTBUG-50204
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
This fixes a regression in behavior whereby input is not blocked when the side
changes. In QtQuick1, input was tied to opacity: items with a 0 opacity would
not receive input. In QtQuick2, this is not the case.
[ChangeLog][QtQuick][Flipable] Flipable now toggles the 'enabled' property on
whichever side is active. This restores broken behavior compatibility with
QtQuick1, and blocks input to whichever side is not active.
Change-Id: I36e29089cd7ffd05bf1f415490e0e0816a86bf30
Task-number: QTBUG-37072
Reviewed-by: Michael Brasser <michael.brasser@live.com>
QV4::Heap::Base::setVtable has a Q_ASSERT on the state of Base::mm_data,
but that member is never initialized anywhere (that is, the Base class
does not properly protect its invariant). There were workarounds in some
places for initializing the member, but only in debug mode.
That was wrong for a number of reasons:
1) Q_ASSERT is still enabled if QT_FORCE_ASSERTS is defined
2) in release mode, the compiler will remove the double initialization
anyway
Another solution would be to give QV4::Heap::Base a constructor that
initializes the member, but I am not sure whether adding a constructor
to this class is permitted.
Task-number: QTBUG-49681
Change-Id: Ic90fe6b1cbe84978a02fffff141beacbe73c0b9c
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>