aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/items/qquicklistview.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Merge remote-tracking branch 'origin/5.6' into 5.7Liang Qi2016-08-191-2/+2
|\ | | | | | | Change-Id: I7bd70996e3372d154c6b0e47336baa22146667b0
| * QQuickListView: fix doc for itemAt() and indexAt()Anton Kudryavtsev2016-08-181-2/+2
| | | | | | | | | | | | | | These methods have real arguments. Change-Id: Ieb4ea8396876f237adedf5df8ab5aeec1055229f Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* | Merge remote-tracking branch 'origin/5.6' into 5.7Liang Qi2016-06-291-2/+6
|\| | | | | | | Change-Id: I70c0c672708522f7157849365cc53ee271d8e460
| * Report changes correctly when inserting into a ListViewStephen Kelly2016-06-211-2/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Commit v5.6.0-beta1~7 (ListView: Sanitize visibleItems list after model insertions, 2015-12-07) introduced sanitizing of the container of visibleItems, but it did not affect the return value of the QQuickListViewPrivate::applyInsertionChange function. The return value is used in QQuickItemViewPrivate::layout() to determine whether the layouting should proceed, or an early return is possible instead. If the layouting does not proceed, then the newly inserted visible items do not get painted, resulting in the linked bug. The return value of the QQuickListViewPrivate::applyInsertionChange function was previously determined by whether the new count of visible items is greater than the previous count. After the sanitation in commit v5.6.0-beta1~7, this numeric comparison is no longer a good indicator of whether a repaint is needed. Change the return value to indicate whether new items were inserted which are visible in a more-direct way. Verify that visible items are initialized correctly in tests. They should not be 'culled'. It is necessary to invoke the layout method first to clear the forceLayout state. Two pre-existing tests fail before the fix in this patch. Change-Id: I625f1e02bf7001834adb147161a1e478a0ce2a0d Task-number: QTBUG-53263 Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
* | Merge remote-tracking branch 'origin/5.6' into 5.7Liang Qi2016-06-201-4/+6
|\| | | | | | | | | | | | | | | Conflicts: src/qml/jit/qv4targetplatform_p.h src/quick/accessible/qaccessiblequickitem_p.h Change-Id: Ic95075a5fad81ec997a61561bd65979dfa3b9d4d
| * ItemViews: Make the wording of the warning on cache properties slightly sterner.Robin Burchell2016-06-161-4/+6
| | | | | | | | | | | | | | | | | | I have seen far too many cases of someone simply setting cacheBuffer to a massive number in an attempt to workaround a slow delegate. It should be explicit that cacheBuffer is not a solution for these problems. Change-Id: I09416d06ff7faf51a104e09ca5f6b3593ddc53c7 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Doc: Fix incorrect 'See also' referencesTopi Reinio2016-02-171-1/+1
| | | | | | | | | | | | | | | | | | | | Fixes these documentation warnings: src/quick/items/qquickgridview.cpp:1512: warning: Can't link to 'l' src/quick/items/qquicklistview.cpp:2183: warning: Can't link to 'l' Change-Id: Icbe4715f12cd66742873c815ef2ffc29b96b36fb Reviewed-by: Mitch Curtis <mitch.curtis@theqtcompany.com>
* | Merge remote-tracking branch 'origin/5.6' into devSimon Hausmann2016-01-221-2/+2
|\| | | | | | | Change-Id: I4af0bf8ec1569097d97f8ce0bb8bf1a0e4a989ec
| * QQuickItemView: Take sticky header/footer into account for ↵Robin Burchell2016-01-151-2/+2
| | | | | | | | | | | | | | | | | | | | | | positionViewAtIndex(). 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>
* | Updated license headersJani Heikkinen2016-01-191-14/+20
| | | | | | | | | | | | | | | | | | | | | | From Qt 5.7 -> LGPL v2.1 isn't an option anymore, see http://blog.qt.io/blog/2016/01/13/new-agreement-with-the-kde-free-qt-foundation/ Updated license headers to use new LGPL header instead of LGPL21 one (in those files which will be under LGPL v3) Change-Id: Ic36f1a0a1436fe6ac6eeca8c2375a79857e9cb12 Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
* | Merge remote-tracking branch 'origin/5.6' into devLiang Qi2015-12-181-11/+48
|\| | | | | | | | | | | | | Conflicts: tests/auto/quick/qquicklistview/tst_qquicklistview.cpp Change-Id: I9588a3e2c7d590e031dd4c66905a79f0d74d3ac8
| * ListView: Sanitize visibleItems list after model insertionsGabriel de Dietrich2015-12-071-11/+48
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In QQuickListViewPrivate::applyInsertionChange(), we update the visibleItems list by first shifting the currently visible items and then we add as many items as the model was added and at the right position. We do this in such a way that we won't create items that will not be visible right away (and may be deleted right after by removeNonVisibleItems()). However, this may leave gaps in the item index sequence, and QQuickListView doesn't always recover gracefully from it. The purpose of this patch is to make sure those gaps are cleared right after inserting the new items. Since the insertions can happen in two different places (either before or after the first visible item) we need to update the visibleItems list accordingly. The way we sanitize visibleItems is by removing those items that lie beyond a possible index gap. If insertion happens before the first visible item, we'll remove all those items before the insertion point. If the insertion happens after the first visible item, we'll remove the items after the insertion point. Besides that, the logic for inserting before the visible position was wrong. As items are inserted bottom-up in that case, the insertion would start by just accounting for the item's size until the condition pos > from && insertionIdx < visibleIndex would become false only because 'pos' would be small enough. After that, the next loop run would start adding items before the 'from' position, which is wrong. Our fix is to move the condition outside the loop if the insertion index will be before the visible index and just account for the items' size in that case. Otherwise, the insertion happens as usual until pos < from. Change-Id: I35767cf6e9737bea1fe7677e580245fc7172710c Task-number: QTBUG-48870 Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com> Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
* | ListView: add keyNavigationEnabled propertyMitch Curtis2015-12-081-1/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | It is useful for applications that need to selectively enable or disable mouse and keyboard interaction. [ChangeLog][QtQuick][ListView] added keyNavigationEnabled property to allow mouse and keyboard interaction to be selectively enabled/disabled. Change-Id: I1cdb73e7be105bcc5c131e3cf2ae242dc66e8a65 Task-number: QTBUG-17051 Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
* | Merge remote-tracking branch 'origin/5.6' into devLiang Qi2015-12-071-16/+18
|\| | | | | | | Change-Id: Ica75a71062d0613e415f2433c5c22c2e251b37cd
| * QQuickListView: Refactor FxViewItem releasing codeGabriel de Dietrich2015-12-011-14/+16
| | | | | | | | | | Change-Id: Id13e982ff3286ec6f369c3d5898de3da3314579d Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
| * ListView: fix random crashes when accessing deleted objectsJ-P Nurmi2015-11-261-2/+2
| | | | | | | | | | | | | | | | | | | | These crashes occur randomly with tst_combobox from qtquickcontrols2, and with the test case attached to the linked bug report. Change-Id: If7d91045f86ec33e7fe398ed02f3edf80700651a Task-number: QTBUG-48277 Reviewed-by: Nikita Krupenko <krnekit@gmail.com> Reviewed-by: Liang Qi <liang.qi@theqtcompany.com>
* | Merge remote-tracking branch 'origin/5.6' into devLiang Qi2015-11-211-2/+2
|\| | | | | | | Change-Id: I3567f741394f912d4312460e85555b6c39b61cb4
| * Don't make currentIndex skip an extra item on removalAlberto Mardegan2015-11-131-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | Improve the logic for determining the desired viewport position, which got partially broken with 134d980a7fcf61c5440019bcfb3fdfc39c3f5f3c. Let's not alter topItem and bottomItem if their index appears to be correct. Task-number: QTBUG-49330 Change-Id: Ib1c88de51be28cbb0afb1741440adb03ae8ebd87 Reviewed-by: Albert Astals Cid <albert.astals@canonical.com> Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
* | QQuickListView: Make sticky headers & footers work with no list items.Robin Burchell2015-09-281-9/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Overlay headers are supposed to be fixed in position. This worked for "usual" cases, but flicking a list with an empty model allowed the header & footer to move. Two fixes were required: * viewportMoved needs to call updateHeader and updateFooter if there are no items if sticky headers are enabled * updateHeader and updatefooter need to always fix the position of the header & footer. Change-Id: I77519d91f587458777c6c8f4863270cf762ac286 Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
* | QQuickListViewPrivate::updateHeader: Remove unnecessary nullptr check.Robin Burchell2015-09-281-16/+14
|/ | | | | | | | | | updateHeader checks for a nonexistent header at the very beginning and creates one if there is none, so 'header' will always have a valid pointer. static_cast isn't type-safe, so if it wasn't a FxListItemSG, it wouldn't end up giving us 0 anyway, so this check did nothing. Change-Id: I7a021173b2ab7c634f0a290b8e3b3e1659756076 Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
* ListView: Set currentItem's culled state on geometry changeGabriel de Dietrich2015-09-211-0/+9
| | | | | | | | | | | | | | | When the viewport is moved, the ListView may cull its currentItem if it's out of the viewport bounds. However, it could be that this is only a transient state while the currentItem is being animated. Unfortunately, we don't uncull the currentItem at any moment during the animation. To solve this, we simply set the currentItem's culled state every time its geometry changes. Change-Id: I72d548f13f229029ccd8568721ea23e73f7b4392 Task-number: QTBUG-48044 Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
* Merge remote-tracking branch 'origin/5.5' into 5.6Ulf Hermann2015-08-181-4/+4
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
| * Consistently use the override keywordThiago Macieira2015-07-191-4/+4
| | | | | | | | | | | | | | Clang doesn't like when it's inconsistent. Change-Id: Ib306f8f647014b399b87ffff13f23eebda07757b Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
* | Don't change the currentItem after a viewport resizeAlberto Mardegan2015-07-201-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When highlightRangeMode is set to StrictlyEnforceRange and the view gets resized, we don't want the currentIndex to change. The code touched by this patch was introduced by commit I08b7e61496a79f71c3b40fafaca985ae90f88503 back in Qt 4.7 times, and never changed since then. Task-number: QTBUG-43555 Change-Id: Ie67faa6898f13a1f7b0f1c4ae6c29721cb7dfa41 Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com> Reviewed-by: Michael Brasser <michael.brasser@live.com> Reviewed-by: Alan Alpert <aalpert@blackberry.com>
* | Fix QQuickListViewPrivate::releaseItem()J-P Nurmi2015-07-101-1/+2
| | | | | | | | | | | | | | | | | | Fixes a regression introduced by 1e3924d. The FxViewItem gets deleted by QQuickItemViewPrivate::releaseItem(), so the QQuickItem pointer must be stored before calling the base class implementation. Change-Id: I0bcffc7bee8a4cdbebdce0fe2d2b990bfa52dc6c Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
* | Merge remote-tracking branch 'origin/5.5' into devLiang Qi2015-06-301-13/+17
|\| | | | | | | | | | | | | | | | | | | Conflicts: .qmake.conf src/qml/qml/qqmlengine.cpp src/quick/items/qquickitemsmodule.cpp tools/qml/main.cpp Change-Id: Ida8daf6b4d7e675385f2f5514c446e52dedaf136
| * Correctly initialize ListView section attached properties.Martin Jones2015-06-251-13/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | During item insertion, indexes of items in the visibleItems list were not adjusted before new items were created. Section initialization was broken during insertion because section calculation relies on the indexes of the items in the visibleItems list. The incorrect section properties caused spurious section header creation, and layout issues. Apply the index offset before creating the new items. This mirrors what GridView already does. Change-Id: I549a81825cf0e979bc5830840bf6cb75c7a82cac Task-number: QTBUG-43873 Reviewed-by: Bea Lam <bea.lam@jollamobile.com>
* | ListView: more robust output in debug messageLiang Qi2015-06-291-5/+5
| | | | | | | | | | | | | | | | Contains essentially the same information, but allows the item pointer to be null. Change-Id: Ib848e0050c895facfbf13bddc6fec12df37a66ff Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
* | Fixed a QQuickListView crashLiang Qi2015-06-291-15/+18
| | | | | | | | | | | | | | | | | | When an ObjectModel item is removed and destroyed. Task-number: QTBUG-46798 Change-Id: Ia41dd359d9f3ec5b7af85498dc798f7ab55dca3c Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com> Reviewed-by: Alan Alpert <aalpert@blackberry.com>
* | ListView/GridView contentHeight should include delayRemove-d itemsMatt Vogt2015-06-231-3/+13
|/ | | | | | | | | | When one or more items are in delayRemove state, the ListView's contentHeight property should include their height. This previously failed if the delayRemove items were at the end of the visibleItems list. Also applies to GridView. Change-Id: Id839e850367a3503123e8ac81dac6ebdccef1a1f Reviewed-by: Martin Jones <martin.jones@qinetic.com.au>
* Cleanup math function includes and usageAllan Sandfeld Jensen2015-02-191-1/+1
| | | | | | | | Use std::math on floats and doubles, and qMath on qreals, and only include the math headers actually needed. Change-Id: I1d511d7b1bac0050eaa947c7baee760b736858bf Reviewed-by: Sean Harmer <sean.harmer@kdab.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>
* Introduce Flickable.OvershootBounds behaviorJ-P Nurmi2015-01-211-1/+1
| | | | | | | | | | | | | | | | | | | Related to QTBUG-38515. It is not always desired to allow dragging over bounds even if flicking overshoots. This makes it possible to implement collision effects for flicks, while a drag over bounds would still do nothing. [ChangeLog][QtQuick][Flickable] Introduced Flickable.OvershootBounds behavior that allows content overshooting the boundary when flicked, but does not allow dragging content beyond the boundary of Flickable. [ChangeLog][QtQuick][Important Behavior Changes] Flickable.DragAndOvershootBounds value changed from 2 to 3. This will only affect you if you've worked around enum type checking and have the integer value explicitly in your code. Change-Id: I63c3540ab293a9c7c801d81220f74909d3fa1e17 Reviewed-by: Martin Jones <martin.jones@qinetic.com.au>
* Fix flick() with ListView.SnapToItem at bounds.Michael Brasser2015-01-131-4/+4
| | | | | | | | | | Previously flick() would not always allow flicking to the very end of a ListView if ListView.SnapToItem were set. Stop ListView from adding overshoot, and then incorrectly correcting, if we are flicking exactly to the end of a list. Change-Id: Iad56e433bc1ba7d62f0553c4355469c9861df919 Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
* Merge remote-tracking branch 'origin/5.4' into devFrederik Gladhorn2014-10-091-1/+1
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/quick/items/context2d/qquickcanvasitem.cpp src/quick/scenegraph/coreapi/qsgbatchrenderer.cpp src/quick/scenegraph/coreapi/qsgrenderer.cpp src/quick/scenegraph/qsgadaptationlayer.cpp src/quick/scenegraph/qsgrenderloop.cpp src/quick/scenegraph/qsgthreadedrenderloop.cpp src/quick/scenegraph/qsgwindowsrenderloop.cpp src/quick/scenegraph/util/qsgatlastexture.cpp src/quick/scenegraph/util/qsgtexture.cpp src/quick/util/qquickprofiler_p.h Change-Id: Ie274c3baf72a8a0711c87d67238d68e2b2887429
| * Doc: apply title case to all section1 titlesNico Vertriest2014-09-241-1/+1
| | | | | | | | | | | | Task-number: QTBUG-41250 Change-Id: I303d989992c9685f73baae50c64accf71b43549f Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
* | Merge remote-tracking branch 'origin/5.4' into devOswald Buddenhagen2014-09-111-39/+17
|\| | | | | | | | | | | | | | | | | Conflicts: src/quick/items/qquickpainteditem.h src/quick/items/qquickshadereffectsource.cpp src/quick/items/qquickshadereffectsource_p.h Change-Id: If98096443afe85fc4370cef971eace050006a61b
| * Update license headers and add new licensesJani Heikkinen2014-08-251-19/+11
| | | | | | | | | | | | | | | | | | - Renamed LICENSE.LGPL to LICENSE.LGPLv21 - Added LICENSE.LGPLv3 & LICENSE.GPLv2 - Removed LICENSE.GPL Change-Id: I84a565e2e0caa3b76bf291a7d188a57a4b00e1b0 Reviewed-by: Jani Heikkinen <jani.heikkinen@digia.com>
| * ItemView: use categorized logging for delegate lifecycleShawn Rutledge2014-08-131-20/+6
| | | | | | | | | | | | | | | | | | It becomes configurable at runtime instead of having to uncomment and recompile. Change-Id: I2c6f24c89f7e6fe1a9a77b948cdac6f2994680bf Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com> Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
* | Add Q_DECL_OVERRIDEAlbert Astals Cid2014-08-141-42/+42
|/ | | | | Change-Id: I2e64950aef710f943c3bc50bc9bf8a1f7fb58d28 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
* ListView: add support for "pull back" header & footerJ-P Nurmi2014-08-081-24/+139
| | | | | | | | | | | [ChangeLog][QtQuick][ListView] Introduced headerPositioning and footerPositioning properties to control whether header and footer are positioned inline, as overlays, or so that they slide away and can be pulled back regardless of the content position. Change-Id: Ifef1faf1ce6acf2b55cd1b6408e22ec2de841409 Reviewed-by: Alan Alpert <aalpert@blackberry.com> Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
* Merge remote-tracking branch 'origin/5.3' into devSimon Hausmann2014-07-261-1/+1
|\ | | | | | | | | | | | | | | | | Conflicts: src/qml/compiler/qv4ssa.cpp src/qml/jsruntime/qv4arrayobject.cpp src/qml/jsruntime/qv4engine.cpp Change-Id: Ie3ef6202b6a3a8521971e1be10c40c6a2db6989c
| * Don't recreate header and footer unnecessarilyMartin Jones2014-07-251-1/+1
| | | | | | | | | | | | | | | | | | | | The only time that they need to be recreated is if the orientation changes (even then, a good implementation could handle it, but no point requiring that now). Task-number: QTBUG-40375 Change-Id: Id0215fb812724827bb139cda8f8dc6208c703852 Reviewed-by: Andrew den Exter <andrew.den.exter@qinetic.com.au>
* | Fix QQmlDelegateModelChangeArrayLars Knoll2014-07-221-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | The class had a vtable, clashing with assumptions about Managed objects. The derived classes where actually only cosmetic sugar on top of the basic change class. Clean this up and unify the functionality in the base class. In addition adjust the class to the new data layout. Change-Id: I8677f6c71465381f7ebdf82eb6025fda6d137ec3 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* | Merge remote-tracking branch 'origin/5.3' into devFrederik Gladhorn2014-07-101-2/+2
|\| | | | | | | Change-Id: Iba61035910c46627e5e1c3824757da7b3d573657
| * Doc: correct link/compilation errors in Qt DeclarativeNico Vertriest2014-07-021-2/+2
| | | | | | | | | | | | | | Task-number: QTBUG-34749 Change-Id: I507d54b0568d77c6099a0bd99f5c369b8667032a Reviewed-by: Venugopal Shivashankar <venugopal.shivashankar@digia.com> Reviewed-by: Martin Smith <martin.smith@digia.com>
* | Merge "Merge remote-tracking branch 'origin/stable' into dev" into ↵Frederik Gladhorn2014-05-151-2/+2
|\| | | | | | | refs/staging/dev
| * Item views: prevent negative cache bufferJ-P Nurmi2014-05-071-2/+2
| | | | | | | | | | | | | | | | | | | | A negative cache buffer does not make much sense, and the item views would go crazy and start creating/destructing delegates endlessly. Task-number: QTBUG-38725 Change-Id: I1fbba1f3130a99af67fbc4c2aba4d3199d0554a9 Reviewed-by: Liang Qi <liang.qi@digia.com> Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
* | Don't adjust the position of transitioning list items.Jan Arve Saether2014-05-141-0/+2
|/ | | | | | | | | Adjusting the position of list items only makes sense for items that belongs to the layout. Task-number: QTBUG-38229 Change-Id: I7a05f7a3591620cce3cd9ab84cfecbe325e5e93c Reviewed-by: Bea Lam <bea.lam@jollamobile.com>
* ListView: fix rounding errorsJ-P Nurmi2014-04-091-5/+5
| | | | | | | Task-number: QTBUG-37339 Change-Id: I223e4d6bcabb1daa705c0ed2212e7e2b2fc3f37c Reviewed-by: Andy Shaw <andy.shaw@digia.com> Reviewed-by: Alan Alpert <aalpert@blackberry.com>