aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/items/qquickitem.cpp
Commit message (Collapse)AuthorAgeFilesLines
* QQuickItem: fix an infinite loop nextItemInFocusChain()Liang Qi2016-01-201-0/+2
| | | | | | | | When isTabFence is set to true and no children. Task-number: QTBUG-50516 Change-Id: I8430336fde7ab041797f8f9d9dfe5b9d56fecddd Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
* Properly check the arguments of mapFrom/ToItemLars Knoll2015-12-011-13/+45
| | | | | | | | | Check that we have the right type and number of arguments and throw a type error if they don't match. Change-Id: I23d37074bf0a6f88e656897862eedc8f7c9f9f8f Task-number: QTBUG-41686 Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
* Fix childrenRect calculationCornelius Mika2015-10-311-5/+5
| | | | | | | | | | | | | Because the 'bottom' and 'right' variables were both initialized to 0, the bottom right corner of the children rect was clamped to coordinates >= (0, 0). Additionally, replace FLT_MAX with the more appropriate std::numeric_limits<qreal>::max(). Task-number: QTBUG-38732 Change-Id: I073b0b44737cf1faed5e4f6a5d466dd830d451bf Reviewed-by: Mitch Curtis <mitch.curtis@theqtcompany.com>
* Merge remote-tracking branch 'origin/5.5' into 5.6Liang Qi2015-10-261-9/+11
|\ | | | | | | | | | | | | | | Conflicts: tests/auto/qml/qml.pro tools/qmlprofiler/qmlprofilerclient.cpp Change-Id: Id47f15a5ab38f8ec79f0a26c92805acba62caac4
| * QQuickItem: detect loop in KeyNavigation chainLiang Qi2015-10-141-1/+3
| | | | | | | | | | | | Task-number: QTBUG-47229 Change-Id: I22dbe5ee1fff4e9a8de4fa69b43e4d9a87677192 Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
| * Correct some areas of QQuickItem's documentationMitch Curtis2015-10-131-8/+8
| | | | | | | | | | Change-Id: I2a2c684cd3f55a5a4311fd28b893e6a93c022ace Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
* | Quick: Sanitize reading environment variables.Friedemann Kleint2015-10-261-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Where possible, use qEnvironmentVariableIsSet()/ qEnvironmentVariableIsEmpty() instead of checking on the return value of qgetenv(). Where the value is required, add a check using one of qEnvironmentVariableIsSet()/Empty(). Move QSGAtlasTexture::qsg_envInt() to qsgrenderer.cpp for reuse as qt_sg_envInt() and add qt_sg_envFloat(). Change-Id: I4c93f16c228d4f537154f389a0fa1427654485f7 Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
* | QQuickItem: Make setParent() error message more usefulGabriel de Dietrich2015-10-221-1/+1
| | | | | | | | | | Change-Id: Ie39b7ee91024b6b090fce2b58bb240cbae724b8f Reviewed-by: Mitch Curtis <mitch.curtis@theqtcompany.com>
* | QQuickItemPrivate: added a accessibleRole()Liang Qi2015-10-211-0/+13
| | | | | | | | | | | | | | Which is used in QAccessibleQuickItem. Change-Id: Ie9c9d59783c4af0c53a3ffe88046132fb6b5c0fd Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
* | QQuickItem: fully document stackBefore() and stackAfter()Mitch Curtis2015-10-201-2/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Some of the following behavior initially came as a surprise to me: int main(int argc, char *argv[]) { QGuiApplication app(argc, argv); QQmlApplicationEngine engine; engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); QObject *window = engine.rootObjects().first(); // Assume that a and b are rectangles declared in that order, respectively. QQuickItem *a = window->property("a").value<QQuickItem*>(); QQuickItem *b = window->property("b").value<QQuickItem*>(); // a is rendered below b (assume that rendering happens here) qDebug() << "a.z =" << a->z() << "b.z =" << b->z(); // a.z = 0 b.z = 0 a->stackAfter(b); // a is rendered above b qDebug() << "a.z =" << a->z() << "b.z =" << b->z(); // a.z = 0 b.z = 0 b->setZ(1); // a is rendered below b qDebug() << "a.z =" << a->z() << "b.z =" << b->z(); // a.z = 0 b.z = 1 a->stackAfter(b); // a is rendered below b qDebug() << "a.z =" << a->z() << "b.z =" << b->z(); // a.z = 0 b.z = 1 return app.exec(); } I would have thought that stackBefore()/stackAfter() would also change the z value, but it makes sense that it doens't, as z is never really validated, as such. Still, we should document the exact behavior, including information about tab focus ordering. Change-Id: Iafc45aec402d8461e7b53525f81195171f659dff Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
* | QQuickItem: correct focus reason for key navigationLiang Qi2015-10-141-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Before we used Qt::OtherFocusReason for normal key navigation, such as up/down/left/right. But in style world, the reason is critical for focus change. Now we follow the way in widgets world, use Qt::TabFocusReason and Qt::BacktabFocusReason for down/up and right/left(or reversed if mirrored). Task-number: QTBUG-41801 Change-Id: I99e97ea4ced2cef9b3280c578c3a463de8fe1727 Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
* | Libraries: Fix single-character string literals.Friedemann Kleint2015-10-131-1/+1
| | | | | | | | | | | | | | Use character literals where applicable. Change-Id: I294fc4cb5cbbd23df9735ba2b398118f37cbe08a Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
* | Don't send delayed mouse presses to ancestors of the replaying Flickable.Andrew den Exter2015-10-121-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | If a Flickable delayed a mouse press event and then replayed it later, ancestor items of that Flickable would receive the press twice: once when filtering events of the Flickable, and again when the event was replayed to a descendent of the Flickable. Extend the protection against a Flickable receiving that repeat event to all ancestor items so this doesn't happen. Change-Id: I438c146130c24a7d47e9e8712a1ab08f3d915a06 Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com> Reviewed-by: Martin Jones <martin.jones@qinetic.com.au>
* | Merge remote-tracking branch 'origin/5.5' into 5.6Liang Qi2015-10-021-2/+17
|\| | | | | | | | | | | | | Conflicts: src/quickwidgets/qquickwidget.cpp Change-Id: I3e2326bc86a9d3adaafbe3830b75ce9afa81c45b
| * Link to Item Layers documentation from each property of layerMitch Curtis2015-09-231-2/+15
| | | | | | | | | | | | | | | | The layer properties desperately lack code snippets, but the Item Layers section has some, so link to that. Change-Id: I3172102b5a1f95bfc495242a16141f030db0dd3c Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
| * Fix compilation of QtDeclarative with QT_NO_GESTURESTobias Koenig2015-09-221-0/+2
| | | | | | | | | | | | | | | | Allow to compile QtDeclarative module with QT_NO_GESTURES define enabled. Change-Id: I5335f97c675d75c71c81edcc8307338ed3571663 Reviewed-by: Alan Alpert <aalpert@blackberry.com>
* | Add isTabFence private flagGabriel de Dietrich2015-08-211-19/+70
| | | | | | | | | | | | | | | | | | | | | | | | When an item has this flag set, the user can't tab-navigate either out of it, or enter it. We use this flag to implement QQuickPanel as an item for platforms that only support one single top-level window. Change-Id: I1f4313912ae1c70217af0d4d21064932b50a9438 Reviewed-by: Mitch Curtis <mitch.curtis@theqtcompany.com>
* | Add possibility to mirror ShaderEffectSource generated texturesMiikka Heikkinen2015-08-201-0/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | Using textures generated by ShaderEffectSource items (or Item.layer) with custom OpenGL code was non-intuitive due to mismatching coordinate systems, so added a possibility to control the generated texture orientation. [ChangeLog][QtQuick][ShaderEffectSource] Added possibility to mirror generated OpenGL texture. Change-Id: I7c03d8b6fbfc43d69812c15d244200fb8e7c7bb9 Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
* | Merge remote-tracking branch 'origin/5.5' into 5.6Ulf Hermann2015-08-181-1/+24
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/qml/debugger/qv4debugservice.cpp src/qml/jsruntime/qv4value_inl_p.h src/qml/jsruntime/qv4value_p.h src/qml/memory/qv4mm.cpp src/qml/memory/qv4mm_p.h src/qml/qml/qqmlnotifier_p.h src/qml/qml/qqmlproperty.cpp src/quick/items/qquickflickable.cpp src/quick/items/qquicktextedit.cpp tests/auto/quick/qquickwindow/BLACKLIST The extra changes in qqmlbinding.cpp are ported from changes to qqmlproperty.cpp that occurred in parallel with writeBinding() being moved to qqmlbinding.cpp. Change-Id: I16d1920abf448c29a01822256f52153651a56356
| * Doc: added documentation to undocumented methodsNico Vertriest2015-08-041-1/+24
| | | | | | | | | | | | Task-number: QTBUG-36985 Change-Id: Idc6f7961f4f02f66dc3d4a8e5d09dd15d43b7757 Reviewed-by: Venugopal Shivashankar <venugopal.shivashankar@digia.com>
* | Doc: Fix QtQuick::EnterKey QML type documentationTopi Reinio2015-08-041-21/+32
| | | | | | | | | | | | | | Fix QDoc warnings and edit language/formatting. Change-Id: I38f4683c582e444079bff488d0d2e0d9682a7085 Reviewed-by: Venugopal Shivashankar <venugopal.shivashankar@digia.com>
* | Add EnterKey attached propertyKai Uwe Broulik2015-08-031-0/+74
| | | | | | | | | | | | | | | | | | | | | | This adds an attached property EnterKey allowing to manipulate the Enter key appearance. [ChangeLog][QtQuick][Item] Added EnterKey attached property that allows to change the appearance of the Enter key on an on-screen keyboard Change-Id: Ic9a01b0217c317e4ed3a9eef1fa01f2f113f0294 Reviewed-by: Alan Alpert <aalpert@blackberry.com>
* | Don't resolve the d-pointer when we don't use it.Ulf Hermann2015-06-151-1/+1
| | | | | | | | | | Change-Id: Ia8551e28dcd237a536038ed7f658a3d1164706c6 Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
* | QQuickWindow: Move itemsToPolish from a QSet to QVector.Robin Burchell2015-06-061-3/+3
|/ | | | | | | | | | | | | | QQuickItem already keeps track of whether the polish flag has been set, so the set provided no functional advantage here, and would have served to pessimize processing of polish if anything - now adding items to polish and processing them becomes constant-time operations. The only operation that is pessimised is removing polish off an existing item: but this should not be too horrid, unless the number of items to polish stacks up tremendously. Change-Id: I5d26dc899570a1e0186018850c21659e1f60a6b3 Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
* Fix memory corruption when sharing QObjects between different QML enginesSimon Hausmann2015-05-081-3/+1
| | | | | | | | | | | | | | When marking the JS wrappers for QObject manually, we cannot use ddata->jsWrapper directly but we must respect the case where the same object is exposed to different engines and then we must mark the wrapper that belongs to the engine that is currently collecting garbage. Change-Id: If82883c762ccaf3431e7074243ff2ff703234d66 Task-number: QTBUG-44895 Reviewed-by: Marco Martin <mart@kde.org> Reviewed-by: Jan Kundrát <jkt@kde.org> Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org>
* Doc: Fix linking issues in Item QML type documentationTopi Reinio2015-04-291-5/+5
| | | | | | | | | 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>
* Return the correct type from Item::mapToItem/Item::mapFromItem.Mitch Curtis2015-04-081-77/+62
| | | | | | | | | | | | | | | | | | | | | 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>
* Improve debug operator for QQuickItem.Friedemann Kleint2015-04-021-6/+15
| | | | | | | | | | | | | | | 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>
* Merge remote-tracking branch 'origin/5.4' into 5.5Frederik Gladhorn2015-03-171-3/+2
|\ | | | | | | Change-Id: I4c338a44c1d64c2d8e637971ab3ec6982c40a685
| * Make sure we deref an item from its window.Gunnar Sletta2015-03-061-3/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* | Fix invocations of static methods of QGuiApplication/QCoreApplication.Friedemann Kleint2015-03-051-1/+1
| | | | | | | | | | Change-Id: I7bcc209b0c6e77cf6d974af85a19487345a48975 Reviewed-by: Erik Verbruggen <erik.verbruggen@theqtcompany.com>
* | Merge remote-tracking branch 'origin/5.4' into 5.5Frederik Gladhorn2015-02-241-10/+8
|\| | | | | | | | | | | | | | | | | | | | | Conflicts: .qmake.conf LICENSE.GPLv2 examples/qml/networkaccessmanagerfactory/view.qml src/qml/jsruntime/qv4runtime.cpp src/qml/jsruntime/qv4stringobject.cpp Change-Id: I5d12f436d60995e51d5c2f59d364e9cbc24f8e32
| * Fix width/height property assignment during animations.Aaron McCarthy2015-02-121-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
| * Doc: link issues qtdeclarativeNico Vertriest2015-02-041-9/+7
| | | | | | | | | | | | Task-number: QTBUG-43810 Change-Id: I154ffa83512435c3e455937a3f81931a45d9e368 Reviewed-by: Martin Smith <martin.smith@digia.com>
* | Use TabFocusBehavior in QStyleHints in QtQuickLiang Qi2015-02-121-11/+2
| | | | | | | | | | | | | | | | * QQuickItemPrivate::qt_tab_all_widgets was removed. * qt_tab_all_widgets in test was updated. Change-Id: I418d7a3edae0a4782a91289f6c0494ff5874d071 Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
* | Update copyright headersJani Heikkinen2015-02-121-7/+7
| | | | | | | | | | | | | | | | | | Qt copyrights are now in The Qt Company, so we could update the source code headers accordingly. In the same go we should also fix the links to point to qt.io. Change-Id: I61120571787870c0ed17066afb31779b1e6e30e9 Reviewed-by: Iikka Eklund <iikka.eklund@theqtcompany.com>
* | PinchArea: handle native gestures when availableShawn Rutledge2015-01-251-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | PinchArea is the first Item where we handle a QNativeGestureEvent, so QQuickWindowPrivate::deliverGestureEvent is added to deliver these events in the same way as the other deliverXEvent methods. For now there is not a separate virtual event handler in QQuickItem, because QNativeGestureEvent is not universally available, so it's necessary to handle this event type in QQuickPinchArea::event(). updatePinchTarget() contains code factored out from updatePinch() to do the necessary tranformations on the Item which was set as pinch.target in QML. So far the QNativeGestureEvents are generated only on OSX, so the behavior of the PinchArea on other platforms is unmodified. On OSX the intention is that we do not need to enable multiple-touch events in order to use any of the common 2-finger gestures, and the "feel" will be similar to that of gestures in native applications. [ChangeLog][QtQuick][PinchArea] Pinch gestures are recognized by the operating system on OSX Change-Id: I693526ea120a9144beb7666afeab6256caa73e51 Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* | Use QV4::ScopedObject typedef instead of actual typeOleg Shparber2015-01-031-2/+2
| | | | | | | | | | Change-Id: I0b68c534ea513a7c230b12114f6b42b069f9864b Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* | Remove most of the places where getPointer() is usedLars Knoll2014-12-201-12/+12
| | | | | | | | | | | | | | This is no longer required, and simply uglifies the code Change-Id: Iba91a1d7735ebe23a43437f137a488423b6eb743 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* | Merge remote-tracking branch 'origin/5.4' into devSimon Hausmann2014-12-091-1/+1
|\| | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/qml/jsruntime/qv4arraydata.cpp src/qml/jsruntime/qv4context_p.h src/qml/jsruntime/qv4globalobject.cpp src/qml/jsruntime/qv4internalclass.cpp src/quick/items/qquicktext_p.h src/quick/items/qquicktextedit_p.h src/quick/items/qquicktextinput_p.h Change-Id: If07e483e03197cb997ef47a9c647a479cdb09f4c
| * Error out when trying to set an item as its own parentFrederik Gladhorn2014-12-031-1/+1
| | | | | | | | | | | | Task-number: QTBUG-43063 Change-Id: I92a33047ac7fa2afeff4986b6e42c07afbc59918 Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
* | Merge remote-tracking branch 'origin/5.4' into devSimon Hausmann2014-10-311-0/+7
|\| | | | | | | Change-Id: I30f9c925631991ceb22339d1333936faecffbaf4
| * Remove mouse grabber if touch used for mouse emulation has been grabbedDaniel d'Andrada2014-10-291-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If an item grabs a touch that is currently being used for mouse pointer emulation, the current mouse grabber should lose the mouse as mouse events will no longer be generated from that touch point. Example of what happens without this patch: -User touches a MouseArea. It gets pressed. -Some other item grabs that touch. -This touch eventually ends. -The MouseArea would still be pressed. And what will happens instead after this patch: -User touches a MouseArea. It gets pressed. -Some other item grabs that touch. -The MouseArea gets canceled and released -This touch eventually ends. Change-Id: I24114f18be564553a4a768243bb20379affe7a8f Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
* | Merge "Merge remote-tracking branch 'origin/5.4' into dev" into refs/staging/devLars Knoll2014-10-301-19/+21
|\ \
| * | Merge remote-tracking branch 'origin/5.4' into devFrederik Gladhorn2014-10-291-19/+21
| |\| | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/quick/items/qquickaccessibleattached_p.h src/quick/items/qquickwindow.cpp src/quick/scenegraph/qsgthreadedrenderloop.cpp Change-Id: I8bf07487a75f9d1b0d6efa5914dd06875fc9654d
| | * Add note to QQuickItem docs about directly setting properties in C++.Mitch Curtis2014-10-221-0/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It's not obvious that calling setPosition() directly, for example, won't trigger animations defined in behaviors that react to that item's x and y properties changing, because a quick glance at the code shows that they have almost identical code paths and both emit geometryChanged(). Change-Id: Ic7f7019b1bbba24732569c0de777ee02d79c1d3b Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
| | * Support Accessible.ignored on non-leaf itemsJan Arve Saether2014-10-211-13/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Ignoring items with children will make the children appear as children of the parent of the ignored item. Since setAccessibleFlagAndListener now only sets the flag we also rename the function to just setAccessible Change-Id: I79fc311509a3e454b4698274c63ad0e879fb93e3 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
| | * Make QQuickKeyNavigationAttached respect user set valuesOleg Shparber2014-10-091-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Before this change, when user tried to set KeyNavigation property to the value which was previously automatically assigned, user set flag wasn't raised. Such behavior led to situations, when explicitly set values later were not respected by automatic mutual changes. Change-Id: Id5ba5061c03a61f4d7835a638dc746b1485b9a56 Reviewed-by: Alan Alpert <aalpert@blackberry.com>
* | | Move from a count of cursors, to storing whether or not a subtree has a cursor.Robin Burchell2014-10-291-12/+27
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Calculation of this is going to be slower (of course) as we have to recurse the children, but this only happens when unsetting a cursor or removing a child item from a tree that had a cursor. On the other hand, wasting 4 bytes per ExtraData plus padding is quite a large concern, and it was also forcing allocation of ExtraData for an entire tree that had a cursor set. This also reduces the size of ExtraData from 152 down to 144 bytes through reordering of members on x86_64. Change-Id: Iab14ee71c762285bf4448fc86399070263eb118d Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
* | Remove the "groupNode"Gunnar Sletta2014-10-171-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We originally had the groupnode to simplify adding and removing clip / effect / opacity nodes to the item tree at a time when the renderer was a bit more trivial and only did a single pass over the tree during rendering. The runtime cost at the time was negligible. The QSGBatchRenderer has a bit more logic, so the extra node now costs a bit more. In addition to extra memory, we need to allocate shadow nodes for it and put those into the renderer's internal shadownode hash. This removal increases the performance of adding / removal of simple items by ~10% in addition to reducing the number of nodes in the scene graph by up to 1/3. Change-Id: I8cd64984f868d75820e25d33dfdbebd4d20651fe Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>