aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/items/qquicktableview.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Merge remote-tracking branch 'origin/5.15' into devQt Forward Merge Bot2020-03-091-2/+11
|\ | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/qml/compiler/qqmlirbuilder_p.h src/qml/qml/qqmlpropertycachecreator_p.h src/qmltyperegistrar/qmltypesclassdescription.cpp src/qmltyperegistrar/qmltypesclassdescription.h src/qmltyperegistrar/qmltypescreator.cpp src/quick/items/qquicktext_p.h src/quick/util/qquickvaluetypes_p.h Change-Id: Ic209741592e7b85820bf3845722023a190ebc1c5
| * Merge remote-tracking branch 'origin/5.14' into 5.15Qt Forward Merge Bot2020-03-031-1/+10
| |\ | | | | | | | | | | | | | | | | | | | | | Conflicts: src/qmlmodels/qqmltableinstancemodel.cpp src/qmlmodels/qqmltableinstancemodel_p.h Change-Id: I89339b1cb41ba27fe30c79530859a1c2bfbecc69
| | * QQuickTableView: Immediately delete delegates when possibleUlf Hermann2020-02-281-1/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In the dtor we don't need to care about any side effects a direct delete may have. Rather, any deleteLater() may not take effect anymore as the event loop may be gone already. Task-number: QTBUG-82000 Change-Id: I97935dc47fbbfd0c050e80c333c36a05f685c45d Reviewed-by: Joni Poikelin <joni.poikelin@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
| * | Doc: Fix QQuickTableView snippetUlf Hermann2020-02-241-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | Use static registration, provide a .pro file, and make it load and show the right file. Change-Id: I949831a399ce00cd8b3d012d8bd4e95a1efcdeb5 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | | Merge remote-tracking branch 'origin/5.15' into devQt Forward Merge Bot2020-02-171-13/+7
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/imports/qtqml/plugin.cpp src/qml/qml/qqml.h src/qml/qml/qqmlmetatype.cpp src/qml/qml/qqmlmetatype_p.h src/qml/qml/qqmltypeloader.cpp src/qml/types/qqmlbind.cpp src/quick/items/qquickitemsmodule.cpp tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp Change-Id: I52548938a582cb6510271ed4bc3a9aa0c3c11df6
| * | QQmlInstanceModel: refactor recycling signals to base classRichard Moe Gustavsen2020-02-051-13/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Now that QQmlDelegateModel has an API that handles reusing delegate items (*), we should also move the related signals inside it to be consistent. This will also remove the need to cast the model type in the views before connecting. This patch will also remove warnings that stems from QQuickListView trying to connect to the reuse signals when the model is not a QQmlDelegateModel. *: E.g: virtual ReleaseFlags release(QObject *object, ReusableFlag reusableFlag = NotReusable) = 0; Fixes: QTBUG-81257 Change-Id: Ia8a8f0d68e6ef7edc6c45b414121aaa77632bcd3 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | | Use QTypeRevision for all versions and revisionsUlf Hermann2020-02-031-3/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In many places we carry major and minor versions or revisions that are loosely coupled to minor versions. As the Qt minor version resets now, we need to handle these things more systematically. In particular, we need to add a "major" part to revisions. QTypeRevision can express the current major/minor pairs more efficiently and can also be used to add a major version to revisions. This change does not change the semantics, yet, but only replaces the types. Change-Id: Ie58ba8114d7e4c6427f0f28716deee71995c0d24 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* | | Merge remote-tracking branch 'origin/5.15' into devQt Forward Merge Bot2020-01-211-8/+17
|\| | | | | | | | | | | Change-Id: Ic2cea85917751b89c34768fd80d8b11f5706dd62
| * | QQuickTableView: make syncView/syncDirection/model private implementation ↵Yulong Bai2020-01-201-8/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | virtual For usage in HeaderView, moving getters/setters/sych-ers in private implementation virtual, keep public APIs clean and also make private implementations overridable. Change-Id: I4ad04665b7268354a49dc9711944ee0c6fd2738f Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* | | Use QFlatMap in QQuickTableViewShawn Rutledge2020-01-151-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QFlatMap is implemented to use two containers internally, one for keys and one for values. This improves locality of reference for the purpose of doing binary search to find a key quickly, and also makes the keys() (and values()) accessor really fast. Change-Id: I87bbb06371aeb44c5bcf971d72ae9cd59920f800 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* | | Merge remote-tracking branch 'origin/5.15' into devQt Forward Merge Bot2020-01-141-5/+1
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/imports/folderlistmodel/plugin.cpp src/imports/layouts/plugin.cpp src/imports/localstorage/plugin.cpp src/imports/models/plugin.cpp src/imports/particles/plugin.cpp src/imports/qtqml/plugin.cpp src/imports/qtquick2/plugin.cpp src/imports/shapes/plugin.cpp src/imports/statemachine/plugin.cpp src/imports/testlib/main.cpp src/imports/wavefrontmesh/plugin.cpp src/imports/window/plugin.cpp src/imports/workerscript/plugin.cpp src/qml/jsruntime/qv4sequenceobject.cpp src/qml/qml/qqmlengine.cpp src/qmlmodels/qqmlmodelsmodule.cpp src/qmlmodels/qqmlmodelsmodule_p.h src/qmlworkerscript/qqmlworkerscriptmodule.cpp src/qmlworkerscript/qqmlworkerscriptmodule_p.h src/quick/items/qquickitemsmodule.cpp Change-Id: I5f1fbc3d00e8f583d2c89afc5389de84d68633a7
| * | QQuickTableView: reuse items also when using QQmlInstanceModelRichard Moe Gustavsen2019-12-191-5/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Now that QQmlInstanceModel has an API that supports delegate recycling, remove the special case from TableView. What this means in practice is that a TableView can now also reuse items when the model assigned is a DelegateModel. The recycling API in QQuickInstanceModel is already tested by the QQuickListView test. Change-Id: I08c9fe2ce230c2b41b40fe97efdfca78eb5dd296 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* | | Fix crash in tst_qquicktableviewSimon Hausmann2020-01-131-1/+2
|/ / | | | | | | | | | | | | | | | | Avoid a range-for over a list that's sometimes modified during the iteration. Change-Id: I4888ace4ebb86bfaa9f92d7e6272114c0af01421 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* | Merge remote-tracking branch 'origin/5.14' into 5.15Qt Forward Merge Bot2019-12-101-13/+34
|\| | | | | | | Change-Id: Iadbdd0fb63ca2a9e0b186343f8b730e4114cd71b
| * QQuickTableView: set empty content size when table is emptyRichard Moe Gustavsen2019-12-091-0/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | From before we would bail out early from the rebuild process if we detected an empty table. A result from this is that we left both contentWidth and contentHeight unchanged. This patch will set an empty content size when the table is empty. The effect will be that the user cannot flick the view around based on the old size. Fixes: QTBUG-80505 Change-Id: I3ac080476269fd5906ce79fa007eabb59b5ff4b1 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
| * QQuickTableView: ensure we release items in the old model and not the newRichard Moe Gustavsen2019-12-091-6/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As it stood, we would wait to release loaded items until we started the rebuild process, if the old model was a DelegateModel. But at that time, the model would alread have been changed, so we would release the items by calling out to the wrong model. This patch will ensure that we always release the items immediately when syncing the model, which will also cover the case when the model is a DelegateModel. Fixes: QTBUG-80570 Change-Id: I1b06011f4795727d04d9cd8c20381f65552b8fe8 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
| * QQuickTableView: support assigning a DelegateModelRichard Moe Gustavsen2019-12-091-7/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Normally you either assign a model to TableView that already has a delegate (or don't need one), like DelegateModel or ObjectModel. Or instead you assign a QAIM model and a delegate directly. But if you assign both a delegate and an ObjectModel, TableView would be confused, and ignore the assigned model and instead create an internal wrapper model that ends up empty. This patch will ensure that we don't create a wrapper model in such cases, but instead forward the delegate to whichever model is assigned, even if it ends up as a no-op for models that don't use one. Task-number: QTBUG-80534 Change-Id: Idd220df08617c379dc7808ee1f41c862b78cc201 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* | Merge remote-tracking branch 'origin/5.14' into 5.15Qt Forward Merge Bot2019-12-051-2/+3
|\| | | | | | | | | | | | | | | Conflicts: tests/auto/quick/qquicklistview/tst_qquicklistview.cpp tests/auto/quick/qquicktableview/tst_qquicktableview.cpp Change-Id: Ib46bc1c717cf524eea2fb3d876810c8d55747c91
| * QQuickTableView: Clear items before deleting the modelUlf Hermann2019-12-041-0/+1
| | | | | | | | | | | | Fixes: QTBUG-71374 Change-Id: I534b7612268bb9407844961267865f490d7ff7b2 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
| * QQuickTableView: fix warning messageRichard Moe Gustavsen2019-12-041-2/+2
| | | | | | | | | | | | | | Fix up small copy/paste bug. Change-Id: I0f6c648679c025af9dcebf9459116c6cd6452a14 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* | Merge remote-tracking branch 'origin/5.14' into 5.15Qt Forward Merge Bot2019-11-291-0/+35
|\| | | | | | | Change-Id: Ic754916ddc223c6ce20f0298eec02a3513fc0222
| * TableView: add doc for syncView and syncDirection propertiesYulong Bai2019-11-271-0/+35
| | | | | | | | | | Change-Id: I4a50087b07e6dfe37c9b48d1e3bb73ea50ea64a7 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* | QQmlInstanceModel::ReleaseFlags: add enum value 'Pooled'Richard Moe Gustavsen2019-11-281-4/+1
|/ | | | | | | | | | | | | Now that we're about to add support for delegate item recycling in ListView, we need to add an extra enum value to the ReleaseFlags. This will be needed later so that ListView can distinguish between items that are still referenced and visible in the viewport, and items that not referenced, but at the same time, still alive in the pool. Change-Id: I4a1110b6b43ba109ccd160d22010569dd5410829 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* TableView: use fetchMore() when scrolling to the end of the tableKari Hormi2019-11-201-0/+13
| | | | | | | | | | | QQmlTableInstanceModel implements canFetchMore and fetchMore functions, but these are not called at any point in QQuickTableView. This change checks if additional data can be fetched when atYEndChanged signal is emitted. Fixes: QTBUG-78273 Change-Id: I49b41b09d9a218826b34f32cd9fe4724a6097b52 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* QQuickTableView::forceLayout(): rebuild table if the size of the model has ↵Richard Moe Gustavsen2019-11-121-16/+39
| | | | | | | | | | | | | | | | | | changed An assert will trigger if forceLayout() is called while the model is being reset. The reason is that the forceLayout() schedules a relayout which assumes that the size of the model hasn't changed. But while layouting, it will try to fetch data from the model according to the old size, which will trigger an assert. This patch will add an extra path to forceLayout() that checks if the size of the model has changed, and if so, schedule a complete rebuild instead of just a relayout. Fixes: QTBUG-79395 Change-Id: If61658912d9e90c1a5aef9bc28083da20fa6ec76 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Small performance improvements suggested by clang-tidyAlbert Astals Cid2019-10-071-2/+2
| | | | | | | | | mostly add const &, a few std::move and in particular case, remove const so the std::move being done over the variable actually has effect Change-Id: Id611cd31bc012f219d7a17d4626b1c2a5fbddd66 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* Merge remote-tracking branch 'origin/5.13' into 5.14Qt Forward Merge Bot2019-09-271-0/+1
|\ | | | | | | Change-Id: I73d9e896c05f7d944f3092b51a3a95c7e6e284b8
| * Doc: add TableView \since versionMitch Curtis2019-09-171-0/+1
| | | | | | | | | | | | Task-number: QTBUG-78307 Change-Id: I71bc58ba5e4d930167f56a264e20b352244502a3 Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* | Merge remote-tracking branch 'origin/5.13' into 5.14Liang Qi2019-09-121-12/+3
|\| | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/qml/jsruntime/qv4engine.cpp src/quick/handlers/qquicktaphandler.cpp src/quick/items/qquicktableview.cpp Done-With: Richard Moe Gustavsen <richard.gustavsen@qt.io> Done-With: Ulf Hermann <ulf.hermann@qt.io> Done-With: Shawn Rutledge <shawn.rutledge@qt.io> Change-Id: If9558a33f01693ce96420c094e0b57dfff0626cd
| * QQuickTableView: always relayout after a rebuildRichard Moe Gustavsen2019-08-281-9/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The current logic was based on the idea that if both rowHeight-, and columnWidthProveders were set, we didn't have to relayout the items at the end of a rebuild. Because in that case, the row and column sizes would already be correct after the initial load. This assumption turns out to be false, because the providers are allowed to return -1 to signal that the size of a row or column should use default values (meaning, calculated by TableView). And for those cases, we need to do a relayout at the end of a rebuild. Fixes: QTBUG-77074 Change-Id: I0e0f2fdca1cfa9e98f2a0a2b227c3715c16a70f9 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | QQuickTableView: Add usage of QQuickTableSectionSizeProviderYulong Bai2019-06-281-0/+12
| | | | | | | | | | Change-Id: Ib8417729d439cf0c638dae7a43025aa315406793 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* | Merge remote-tracking branch 'origin/5.13' into devQt Forward Merge Bot2019-06-111-0/+3
|\| | | | | | | | | | | | | | | | | | | Conflicts: src/qml/jsruntime/qv4value_p.h src/qml/qml/qqmlmetatype.cpp src/qml/qml/qqmltypewrapper.cpp src/quick/items/qquicktableview.cpp Change-Id: I684f8e01a711580512848bf1253f39b39fcbf4c7
| * QQuickTableView: Don't try to forceLayout with no columnsDavid Edmundson2019-06-051-0/+3
| | | | | | | | | | | | | | | | | | | | forceLayout is user invokable. If it's called before columns are loaded our call to firstColumn call QMap::firstKey will assert/crash. Insertion of columns later will trigger a layout. Change-Id: Id102e3ab4756ddd3f433037783dc70e1b29101c8 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* | QQuickTableView: don't recalculate content width while flickingRichard Moe Gustavsen2019-05-151-26/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There are now three mechanisms in TableView that works together to ensure that the table ends up edge-to-edge with the content view. They are applied in the following order: 1. Adjust the content size, based on the predicted size of the table. 2. Adjust the origin and endExtend on the fly, if the content size is wrong. 3. Move the table directly to where it should be, in case we don't have time to wait for the origin to change. We could have, strictly speaking, setteled with just one of them, but choose to use them all at the same time for best flicking experience. Still, 1. and 2. sometimes step on each others feet when they both detect that something is a bit off, and adjust. So rather than adjusting the size of the content view every time we load a new row or column, we just keep the first prediction. And then we leave all later ajustments to 2. and 3. This turns out to be a more stable, and will avoid some glitches that occur when flicking using a scrollbar, if several mechanisms kick in at the same time. Change-Id: Ib551a0bf8f6ee59ac9b3556b9462c91adb9cc80b Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | QQuickTableView: change implementation of enforceTableAtOrigin()Richard Moe Gustavsen2019-05-111-38/+195
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We set the size of the content view to be the size of the complete table. The problem is that the exact size will always be just a prediction, since we would otherwise need to iterate over all rows and column up front, to be able calculate the exact size. This is not acceptable when using non-trival table models. A side effect of this, is that is will be possible to flick the viewport further out than the actual end of the table, if the content view turns out to be larger than the table itself. From before we used to just move the whole table back into the viewport when that happened, which could be seen as a sudden jump of the table to a new position. This change will improve this logic so that we can avoid most visual jumps. Instead of moving the table around, QQuickFlickable supports moving the origin instead. So when we see that the table is not in sync with the content view, we simple move the origin to the edge of the table. The effect is that any flicking or ongoing momentum animation in QQuickFlickable will continue as if nothing happened. This is also the same logic used by QQuickListView. Change-Id: I6060b7e84b9489c8fa569e6ff41b958e3871f8e7 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | QQuickTableView: sync viewport rect with syncView when rebuildingRichard Moe Gustavsen2019-05-091-2/+7
| | | | | | | | | | | | | | | | | | When moving contentX/Y, we also need to ensure that the viewport rect reflects the change. Otherwise we'll end up loading rows and columns somewhere else then under the viewport. Change-Id: Ifbd3d66b9b3a822414aefde9b5bd088274dfa2ad Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | QQuickTableView: improve updateAverageEdgeSize()Richard Moe Gustavsen2019-05-081-6/+15
| | | | | | | | | | | | | | | | | | | | | | When we know the exact size of the content view, we can take advantage of this to calculate the exact average cell size. This in turn will improve the positioning of rows and columns whenever we need to rebuild, since we have a better idea where they should end up in the content view. Change-Id: I46c3e87eb38ab032df7c28b6144d1b2de1b9d4ef Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | QQuickTableView: remove relayoutTable()Richard Moe Gustavsen2019-05-081-14/+3
| | | | | | | | | | | | | | | | | | | | It was only called from one place. And we can optimize it a bit by moving the contents to the caller. Besides, stray relayouts without rebuilding (RebuildOption::LayoutOnly) is no longer allowed. Change-Id: Id63bd2d71969b81ea999caa9d4d331abf8999704 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | QQuickTableView: check if we need to rebuild when syncing with syncViewRichard Moe Gustavsen2019-05-031-5/+17
| | | | | | | | | | | | | | | | | | | | | | | | Since different tables can have different sized models, it can also happen, as the views are being flicked around, that some views temporarily end up with no visible rows and columns in the viewport. When that happens, we continually check if the columns should become visible again, and if so, schedule a rebuild. Change-Id: Ic84e47fd5d7968c1f1408eb122e38fa841e7aec7 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | QQuickTableView: protect fixup() from being called while resizing the ↵Richard Moe Gustavsen2019-05-021-1/+16
| | | | | | | | | | | | | | | | | | | | | | content view Calling the base class implementation of fixup might move the content view and start animations etc, which will cause glitches. So ensure we don't do this when we adjust the content size internally. Change-Id: I214a6ae2da0c21fd733ea884bccb5e77fc554615 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | QQuickTableView: optimize forceLayout() to start updating from the rootRichard Moe Gustavsen2019-05-021-5/+4
| | | | | | | | | | Change-Id: Ib2f195780415836ebb03c151a6586fd7b0fb77b8 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | Move model types into their own libraryUlf Hermann2019-05-021-3/+3
| | | | | | | | | | | | | | | | | | | | The model types are not part of the core QML runtime and should only be loaded if you explicitly import them. We cannot enforce that in Qt5 as some of them are available from the QtQml import, but we can change it in Qt6. Change-Id: I1e49e84d748e352537ec2d4af901c034c91d038f Reviewed-by: Erik Verbruggen <erik.verbruggen@me.com>
* | Add QQuickTableSectionSizeProvider for QQuickTableViewYulong Bai2019-04-301-0/+65
| | | | | | | | | | | | | | Used to store columnWidths and rowHeights. Change-Id: Id66fba9de05afa2c4df15761fb004b4f046fe103 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
* | QQuickTableView: avoid building syncView children before syncView has finishedRichard Moe Gustavsen2019-04-291-8/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | If you put two tables inside an async loader, with one being the syncView for the other, the syncView child will start loading items async simultaneously with the syncView. This is unnecessary, and steals loading resources, since the child will have to rebuild anyway once the syncView has completed loading. So return early from the recursiveUpdateTable call before handling the children if we detect that the parent is not done. Change-Id: I8c0badaf3cfa3a353a650e5f38f381bf9a7b98f9 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | QQuickTableView: update calculateTopLeft() to take syncView into accountRichard Moe Gustavsen2019-04-261-32/+97
| | | | | | | | | | | | | | | | | | | | | | calculateTopLeft() takes care of finding which cell should be the 'corner stone' that needs to be loaded first when doing a rebuild. When we have a syncView, the top left cell should match the top left cell of the syncView, so the logic needs to change quite a bit to take this into account. Change-Id: Ia0b621a3155bbd113fa37c2ed585f16627d46443 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | QQuickTableView: update viewportMoved() to take syncView into accountRichard Moe Gustavsen2019-04-251-35/+115
| | | | | | | | | | | | | | | | | | | | | | | | Now that several table views can stay in sync through the syncView parent-child chain, we also need to ensure that the position of the content views stays in sync. This patch will recursively go through all connected views when one of the views are moved and set the same position on them all according to the syncDirection flag. Change-Id: I5a5b8e795426484eeab3771f6c8d4c9b7da046eb Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | QQuickTableView: implement recursive updateTable()Richard Moe Gustavsen2019-04-241-0/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | Now that a TableView can be inside a syncView hierarchy, we cannot update a table in isolation, but need to coordinate this with the other views. It's especially important that we update a parent syncView before a child syncView, to ensure that the parent has calculated all the necessary columns width and row heights. For that reason, we always update the table views starting from the top. Change-Id: Iba8ae7d28fa0bb2fbbad9f8fc7aa198e15b91872 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | QQuickTableView: sync geometry properties with syncViewRichard Moe Gustavsen2019-04-241-0/+31
| | | | | | | | | | | | | | | | | | | | Ensure that properties that has to do with the layout stays in sync with the syncView. This is currently rowSpacing, columnSpacing, rowHeight, columnWidth, contentWidth and contentHeight. Change-Id: I5af29d7be6c30cefbfa7d2353f53359907c9405b Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | Doc: improve Example Usage section of TableViewMitch Curtis2019-04-241-2/+11
| | | | | | | | | | | | | | | | | | - Make two sub-sections: C++ and QML - Add a TableModel example to the QML section Change-Id: Ib391b4c0a78e11f5130944b6ac99e20a5982a453 Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io> Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
* | QQuickTableView: add new 'syncView' propertyRichard Moe Gustavsen2019-04-231-0/+75
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This property can be set to point to another TableView. If set, this TableView will be synchronized to the other table with respect to flicking, column width, row heights, spacing, etc. This logic is needed as a foundation for the upcoming HeaderView. Upcoming patches will implement this logic (together with autotests) gradually. Change-Id: Ic7dea8e1d1aa46bbb3ea6e795953a65c96c25cc6 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>