| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
| |
Use explicit link commands as QDoc cannot create links to single-word
QML type names automatically.
Task-number: QTBUG-45827
Change-Id: I048300728356d3ae9901c5c57febc683137ce090
Reviewed-by: Martin Smith <martin.smith@digia.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
renderWindow() was not reimplemented in the example. This is pretty
bad since renderWindowFor() fails to find a window and thus falls
back to using the default device pixel ratio (which is the highest
dpr present in the system). The result is broken content from Quick
because it operates with a dpr of 2 any time a retina screen is connected,
even when the example's own QWindow is placed on a normal screen.
Add also a note to the QQuickRenderControl docs because it is easy to
overlook.
Task-number: QTBUG-45613
Change-Id: I31bf92ec285f3d9867a5604a4b4e3bea73791932
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
|
|
|
|
|
|
|
|
|
|
|
| |
There were multiple problems in the implementation of the shader cache:
1) it was not thread-safe
2) nothing was ever removed from the hash
3) since the keys into the hash are the actual shader source code, problem
#2 would lead to serious memory consumption over time
Change-Id: I20d1fb2074932e23f89edddba12e68ab8adcbff0
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
|
|
|
|
|
|
|
|
|
|
|
|
| |
In a Qt Quick application on X11, QDrag events were deleted before
their data could be passed to an external application. There was a
function introduced recently to account for this problem, so we should
use that instead.
Change-Id: If74dd32bb8c7aa7c2e3160448af546d2e8640528
Task-number: QTBUG-45604
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Gatis Paeglis <gatis.paeglis@digia.com>
|
|
|
|
|
|
| |
Task-number: QTWEBSITE-628
Change-Id: I608c4fe5e18f6494cc03377080a536a01be232ca
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
|
|
|
|
|
|
|
|
| |
Avoid copying url and file name twice into the context every time we
instantiate an object.
Change-Id: I1c76b80b9c44f95512af5899d760151f6dcd7bb5
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When the TextEdit's alignment was either AlignBottom or
AlignVCenter, several things would be broken: First of all
the position of all non-dirty nodes would not be updated,
so if you e.g. added text to the end of the document, it
would overlap with the previously added text.
Also, the frame decorations were always aligned to the top, since
the basePosition was not accounted for in the node for this.
The fix is to translate the root node to the base position instead
of baking this into the position of the text nodes. This also
automatically fixes frame decorations since it's already aligned
to the top of the root node.
[ChangeLog][TextEdit] Fixed issues with using other vertical
alignments than AlignTop.
Change-Id: I11f73eab21a28658a5cbf00292fd519efd0f3e7f
Task-number: QTBUG-45032
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously we were returning a JavaScript object with x/y/width/height
properties, instead of a point/rect. This meant that the type couldn't
be converted to a point/rect because we don't support duck typing,
where we would deduce the type based on the properties.
One example of a broken use case that this patch fixes is when QML is
unable to convert the return type to a point in a property declaration:
property point p: mouseArea.mapToItem(child, mouseArea.mouseX, mouseArea.mouseY)
Another is using the result of the function to pass to another function:
child.contains(mouseArea.mapToItem(child, mouseArea.mouseX, mouseArea.mouseY))
Change-Id: I3ce82f10175f904dd02c8af6b5e42cee14b2ebb2
Task-number: QTBUG-41452
Reviewed-by: Liang Qi <liang.qi@theqtcompany.com>
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Use new formatting helpers and output name, z only when necessary.
For example,
QQuickRectangle_QML_4 (this = 0xb380e0 , name= "" , parent = 0xa4a290 , geometry = QRectF(0,0 320x480) , z = 0 )
becomes:
QQuickRectangle_QML_4(0xb380e0, parent=0xa4a290, geometry=0,0 320x480)
Change-Id: I5d4a8cf9f435995754f875a928fa36978418e4bf
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Reviewed-by: Alan Alpert (Personal) <416365416c@gmail.com>
|
|
|
|
|
|
|
|
| |
Changed linkColor to update node correctly when link color is changed.
Change-Id: I056811053e2287c93ba9c0afb5ceddef939f46ce
Task-number: QTBUG-45356
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
|
|
|
|
|
|
|
| |
[ChangeLog][QtQuick][TextInput] SetFocusOnTouchRelease is honored
Change-Id: I0c5150465effadb7b1221250875aedf16a83bb2c
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@theqtcompany.com>
|
|
|
|
|
|
|
|
|
| |
qt.quick.touch produces a lot of output. This instead tracks only
the changes to the itemForTouchPointId hash: which touchpoints are
being sent to which items.
Change-Id: I5119b4716a43fb35fd6c6712bf7d4ec46d762a9f
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Change 11a595e30615943cd6c63f08cc44cde7861112eb introduced a
regression where selected text might disappear randomly because
we changed the order the nodes were added to the list. The
order is significant in cases where there is overlap, such as
for painting selections.
Instead of iterating over the hash and thus getting the regular
nodes in random order, we make the first node with any given
key the primary node, add this to the list immediately, and then
just do a look up in the hash for the nodes that should be
merged with it.
Change-Id: Id2208ab672294aa3dd2bc9741e6c6697c2c66746
Task-number: QTBUG-45133
Reviewed-by: aavit <eirik.aavitsland@theqtcompany.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
The previous positions in the delayed touch event should be from
the first touchpoint which is being delayed, not updated based on
subsequent updates that are being merged into it. Clarified
naming and comments in this section.
Task-number: QTBUG-40167
Change-Id: Ie419267e4a33277f9154bd80f5bce104e52d773e
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
|
|
|
|
|
|
|
|
|
|
| |
This allows a parent item to intercept a drag gesture in one direction
when the flickable has reached it's limit in that direction without
disabling the drag over bounds for drag gestures in the opposite
direction.
Change-Id: I6ac60113f150dbb8da42d9b5593325b04be166f5
Reviewed-by: Martin Jones <martin.jones@qinetic.com.au>
|
|\ |
|
| |\
| | |
| | |
| | | |
Change-Id: I4c338a44c1d64c2d8e637971ab3ec6982c40a685
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
We should compare against our own window, not our parent's.
The ref/deref logic for items is there to aid us with having "property
var foo: Image { }" in ShaderEffects, where the property is a
parentless member of a given window. The shader effect would ref
all member properties which are used as samplers, giving these items
the same d->window as itself.
As a consequence, it is wrong to check the old parent's window when it
is the item itself that knows which window it is attached to.
Change-Id: Ic34354fd86b52a7334f9757bf408bef0e25ecfd5
Task-number: QTBUG-43376
Reviewed-by: Andrew den Exter <andrew.den.exter@qinetic.com.au>
|
|/ /
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
since this breaks for asynchronous models, because item creation order
is not guaranteed. We always have the index
for what item to create, so we do not need it either.
Change-Id: Ib8ce25ac342f5cce4784c56e6a91cf70136566b3
Task-number: QTBUG-38879
Task-number: QTBUG-39001
Task-number: QTBUG-44250
Reviewed-by: Ulf Hermann <ulf.hermann@theqtcompany.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Previously this module borrowed its private headers from QtQml, so that
when writing QT += qmldevtools-private, you'd get the private headers from
QtQml. This doesn't work when QtQml is built as a framework.
A cleaner solution is to give this module its headers proper by letting
syncqt create the forwarding headers correctly (and consequently also
include them in make install). In order for this to work, the included
headers themselves cannot include any headers from QtQml, which this
patch also takes care of, through a centralized inclusion of qv4global_p.h.
Change-Id: I9bb8337956a2774cfaca6b338369face6c6ee785
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
|
| |
| |
| |
| |
| |
| |
| |
| | |
It is the same for debugging delegate cycling in ListView.
Task-number: QTBUG-42716
Change-Id: I54b83a25a5d8473c643cd326fe114317103bb24e
Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
|
| |
| |
| |
| |
| | |
Change-Id: I3f9219dd2fed15094c2f7d670a981406e601959b
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Or width >= contentWidth.
If newY is equal to both maxY and minY then the second assignment to
rejectY can clobber the first. Changing the second assignment to an
|= means rejectY is true if either is true.
Secondly maxY became positive when height was greater than contentHeight
instead of having a maximum of 0, which ensured rejectY evaluated to false
in the case newY <= maxY and the mouse was stolen.
Change-Id: I6416d0e23c3ef898887a7b3e3fcdc1dc12853548
Reviewed-by: Martin Jones <martin.jones@qinetic.com.au>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
In cases where you have a huge number of text elements that
can be merged, we would do a lot of reallocations (one per
node that would be merged into another). As the number of
merges grew, this seemed to converge at about 50% of the time
spent in updatePaintNode() in the text classes.
We can almost eliminate this cost by only doing one realloc
per node that will actually end up in the scene graph.
This patch does a first pass where it simply bundles together
nodes that can be merged. Then it does a second pass where it
actually merges the nodes. In this second pass it can easily
precount the required size of the arrays and we can limit
it to a single realloc.
Task-number: QTBUG-37365
Change-Id: I4e44c01cd83df39304cbbce34f3b8f773763e091
Reviewed-by: Michael Brasser <michael.brasser@live.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Some longer and larger .gifs can consume a lot of memory
if every decoded frame is cached. Just as the backing QMovie
provides the ability to not cache frame, so should AnimatedImage.
This also allows a workaround for some animated image types
that can contain loops that aren't handled correctly (QTBUG-24869)
to not leak memory.
Change-Id: I0639461d75bb2c758917893e7a6ae5c215fffa9d
Task-number: QTBUG-44447
Task-number: QTBUG-24869
Task-number: QTBUG-28844
Reviewed-by: Alan Alpert <aalpert@blackberry.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
QQuickTextEdit::invalidateBlock method marks nodes as dirty but doesn't
call QQuickItem::update(). Because of that it's impossible to
rehighlight text by QSyntaxHighlighter.
Task-number: QTBUG-44765
Change-Id: Ibfd973430cf00927dbec027d129c6d722634575e
Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
|
| |
| |
| |
| |
| | |
Change-Id: I7bcc209b0c6e77cf6d974af85a19487345a48975
Reviewed-by: Erik Verbruggen <erik.verbruggen@theqtcompany.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
If you set the width or height of an <img> tag to something
invalid, this will be registered as -2 by the HTML parser.
We should treat this case the same as if there is no width/height
specified and use the implicit size instead.
[ChangeLog][Text] Fixed assert when setting an invalid width or
height on an <img> tag in a text element.
Change-Id: Iae8c33fa184316632f72318e71f26ab005645a21
Task-number: QTBUG-44743
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Native gestures are distinct from QGestureEvent, and we might need
another deliver method for those eventually.
Change-Id: I969c9b830d1dc7a91ffbc6cae2bdb68552a58344
Reviewed-by: Andrew Knight <qt@panimo.net>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
|
| |
| |
| |
| |
| |
| |
| |
| | |
Turning off support for wheel events does not affect gesture support.
Change-Id: I64a110327179d62a69864979396b92472c53285e
Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
Reviewed-by: Andrew Knight <qt@panimo.net>
|
| |
| |
| |
| |
| |
| |
| | |
Avoid repeated instantiation of end() in loops, use variable instead.
Change-Id: I6ab1fe2b82406d5ee91710a0333587ffb82c04d4
Reviewed-by: Erik Verbruggen <erik.verbruggen@theqtcompany.com>
|
|\|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
.qmake.conf
LICENSE.GPLv2
examples/qml/networkaccessmanagerfactory/view.qml
src/qml/jsruntime/qv4runtime.cpp
src/qml/jsruntime/qv4stringobject.cpp
Change-Id: I5d12f436d60995e51d5c2f59d364e9cbc24f8e32
|
| |
| |
| |
| |
| |
| |
| | |
They are related subjects so deserve a mention.
Change-Id: I52f338402c8568f54dfd4b91845f9fafa762ca4d
Reviewed-by: Alan Alpert <aalpert@blackberry.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
During animations the behavior of
anchors.fill: parent
and
width: parent.width
height: parent.height
can be different resulting in subtle UI bugs where the final value of a
property is not applied because it is within epsilon of the previous
value. Fixed by directly comparing the width and height instead of
using operator==(QSize, QSize) which does a fuzzy comparison.
Change-Id: I4288b93db2b7baacd9f71ae1932ae743a428313a
Reviewed-by: Andrew den Exter <andrew.den.exter@qinetic.com.au>
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
|
| |\
| | |
| | |
| | | |
Change-Id: I127c746c4131fc907ea4b6713d307f12a4760666
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The "d->extra" pointer is lazily allocated, hence we must check if it's
valid before dereferencing it.
Task-number: QTBUG-44128
Change-Id: Id69c91e889193b0e9b73ed178c0ff3b13003227f
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Up to Qt 5.3 it was fine setting the orientationUpdateMask in
QScreen in C++, with 5.4 that value is always discarded and overwrote
with 0, this change makes it possible to still set the orientationUpdateMask
value in C++ and not have it overwritten unless specifically changed from QML
Change-Id: I134290ce91be8b91df4e9e8e71120753813f48d7
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
When an item is deleted as a result of an updatePolish() call, it will
be removed from the itemsToPolish set. However, updatePolish()
internally works on a copy of the itemsToPolish set because changes to
the set would invalidate its iterator. Because it is a copy will still
contain the deleted item.
Fix this by simplifying the algorithm to instead pick items one by
one from the itemsToPolish set until it is empty. The recursion guard
has been increased because we're not decrementing it for every single
QQuickItem::updatePolish() call.
Task-number: QTBUG-42913
Change-Id: If7ab7f7616b01daf4d3ed843f927c163dfb03843
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
|
| | |
| | |
| | |
| | |
| | |
| | | |
Task-number: QTBUG-43810
Change-Id: I154ffa83512435c3e455937a3f81931a45d9e368
Reviewed-by: Martin Smith <martin.smith@digia.com>
|
| | |
| | |
| | |
| | |
| | | |
Change-Id: I2153e879c7ad8b770d5ca47dac68f994bb171b2d
Reviewed-by: Alan Alpert <aalpert@blackberry.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The fix for QTBUG-30896 caused a regression in the test case. Now check
both width and implicit width validity before resetting widthExceeded.
Change-Id: I4aba2aad299746906cfe20e288fa60cfe2acc64f
Reviewed-by: Andrew den Exter <andrew.den.exter@qinetic.com.au>
|
| | |
| | |
| | |
| | |
| | |
| | | |
Task-number: QTBUG-38528
Change-Id: Ie16000cf9ba20598da51683751a8fb62798a1322
Reviewed-by: Alan Alpert (Personal) <416365416c@gmail.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
When a Canvas is a child of an item with certain width and height
values (as described in the bug report), it won't paint correctly.
For example, the order of events might occur like so:
1. Canvas width set to 1
2. Canvas height set to 1
3. Canvas width set to 32, which causes the height to also be set to 32
Every size change causes QQuickCanvasItem::geometryChanged() to be
called, but the third event above causes it to be called recursively,
such that the most nested call results in the size being 32x32, but
then the execution returns to the first call and 32x1 is used instead,
overwriting the correct size.
We fix this by setting the new canvas size to width() and height(),
ignoring the recursion and instead using the latest size of the item.
Change-Id: Iebbcbfaa3217319b32b97f6b68f7a8af197a0e89
Task-number: QTBUG-42878
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
We'd assume that a Window existed when that's not always the case.
For example:
import QtQuick 2.4
import QtQuick.Window 2.2
Window {
Loader {
sourceComponent: Canvas {
Component.onDestruction: getContext("2d")
}
Component.onCompleted: active = false
}
}
Change-Id: I5f30876e21ced5658adfa3bac494fd4196e0a7e3
Task-number: QTBUG-42222
Reviewed-by: Ulf Hermann <ulf.hermann@theqtcompany.com>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
When using images in QRC and giving the 1x and 2x image files
respective aliases but without any file extension
(for example 'myimage' and 'myimage@2x'),
then Image would fail to find the 2x variant.
Task-number: QTBUG-44049
Change-Id: I20d0cb2eb48b909775b0ba737b850bc1b6697b35
Reviewed-by: Alan Alpert <aalpert@blackberry.com>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
|
| |/
| |
| |
| |
| | |
Change-Id: I55265f16de153289b3e6f80d510d428f48492bbb
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
QQuickPinchArea did not handle TouchCancel events and would recursively
call QQuickItem::event(). Cancel the pinch gesture by restoring the
pinch state to the start state. Don't recursively call
QQuickItem::event(), instead call QQuickItem::touchEvent() for
unhandled touch events.
[ChangeLog][QtQuick][PinchArea] Fix infinite recursion when TouchCancel
events are received.
Change-Id: Ifce4af91aec4285873cb701069e007bcee180851
Reviewed-by: Martin Jones <martin.jones@qinetic.com.au>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
types/qqmlmodelindexvaluetype.cpp: In static member function 'static QString QQmlModelIndexValueType::propertiesString(const QModelIndex&)':
types/qqmlmodelindexvaluetype.cpp:47:56: warning: 'QString::QString(const char*)' is deprecated (declared at qstring.h:649) [-Wdeprecated-declarations]
items/qquickimagebase.cpp: In member function 'virtual void QQuickImageBase::load()':
items/qquickimagebase.cpp:213:49: warning: 'QString::QString(const char*)' is deprecated (declared at qstring.h:649) [-Wdeprecated-declarations]
items/qquickimagebase.cpp:213:88: warning: 'QString::QString(const char*)' is deprecated (declared at qstring.h:649) [-Wdeprecated-declarations]
Change-Id: I03266aba589ade8228bc286cd3f3f237cd06a780
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
qtdeclarative/src/quick/scenegraph/coreapi/qsgmaterial.cpp:384: warning: Class RenderState has no \inmodule command; using project name by default: QtQuick
qtdeclarative/src/quick/scenegraph/util/qsgsimplerectnode.cpp:39: warning: Class QSGSimpleRectNode has no \inmodule command; using project name by default: QtQuick
qtdeclarative/src/quick/scenegraph/util/qsgtextureprovider.cpp:38: warning: Class QSGTextureProvider has no \inmodule command; using project name by default: QtQuick
qtdeclarative/src/quick/items/qquickwindow.cpp:3156: warning: Cannot find 'closing(...)' in '\fn' void QQuickWindow::closing()
qtdeclarative/src/quick/items/qquickwindow.h:160: warning: No documentation for 'QQuickWindow::closing()'
qtdeclarative/src/quick/items/qquickwindow.cpp:3134: warning: Can't link to 'Window.closing()'
qtdeclarative/src/qml/qml/qqmlfileselector.cpp:90: warning: Undocumented parameter 'parent' in QQmlFileSelector::QQmlFileSelector()
Change-Id: I42cf1e06c9e7a63327acc470bd33a726acc69bfc
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@theqtcompany.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When the text line is offset by the leading distance, the
text decoration needs to be offset by the same value, otherwise
it will be drawn in the wrong location.
[ChangeLog][TextEdit] Fixed positioning of text decoration with some
fonts.
Change-Id: Ic15134326b878255a9b424c14762c3817dfd3123
Task-number: QTBUG-44492
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Andrew Knight <qt@panimo.net>
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
|