diff options
Diffstat (limited to 'src/quick/items/qquickgridview.cpp')
-rw-r--r-- | src/quick/items/qquickgridview.cpp | 35 |
1 files changed, 19 insertions, 16 deletions
diff --git a/src/quick/items/qquickgridview.cpp b/src/quick/items/qquickgridview.cpp index f2fa66332c..272d4a4df5 100644 --- a/src/quick/items/qquickgridview.cpp +++ b/src/quick/items/qquickgridview.cpp @@ -417,11 +417,11 @@ qreal QQuickGridViewPrivate::contentXForPosition(qreal pos) const if (flow == QQuickGridView::FlowLeftToRight) { // vertical scroll if (q->effectiveLayoutDirection() == Qt::LeftToRight) { - return 0; + return -q->leftMargin(); } else { qreal colSize = cellWidth; - int columns = q->width()/colSize; - return -q->width() + (cellWidth * columns); + int columns = (q->width() - q->leftMargin() - q->rightMargin()) / colSize; + return -q->width() + q->rightMargin() + (cellWidth * columns); } } else { // horizontal scroll @@ -444,16 +444,18 @@ qreal QQuickGridViewPrivate::contentYForPosition(qreal pos) const } else { // horizontal scroll if (verticalLayoutDirection == QQuickItemView::TopToBottom) - return 0; + return -q->topMargin(); else - return -q->height(); + return -q->height() + q->bottomMargin(); } } void QQuickGridViewPrivate::resetColumns() { Q_Q(QQuickGridView); - qreal length = flow == QQuickGridView::FlowLeftToRight ? q->width() : q->height(); + qreal length = flow == QQuickGridView::FlowLeftToRight + ? q->width() - q->leftMargin() - q->rightMargin() + : q->height() - q->topMargin() - q->bottomMargin(); columns = qMax(1, qFloor(length / colSize())); } @@ -914,7 +916,7 @@ void QQuickGridViewPrivate::fixup(AxisData &data, qreal minExtent, qreal maxExte qreal tempPosition = isContentFlowReversed() ? -position()-size() : position(); if (snapMode == QQuickGridView::SnapOneRow && moveReason == Mouse) { // if we've been dragged < rowSize()/2 then bias towards the next row - qreal dist = data.move.value() - (data.pressPos - data.dragStartOffset); + qreal dist = data.move.value() - data.pressPos; qreal bias = 0; if (data.velocity > 0 && dist > QML_FLICK_SNAPONETHRESHOLD && dist < rowSize()/2) bias = rowSize()/2; @@ -925,13 +927,13 @@ void QQuickGridViewPrivate::fixup(AxisData &data, qreal minExtent, qreal maxExte tempPosition -= bias; } FxViewItem *topItem = snapItemAt(tempPosition+highlightRangeStart); - if (strictHighlightRange && currentItem && (!topItem || topItem->index != currentIndex)) { + if (strictHighlightRange && currentItem && (!topItem || (topItem->index != currentIndex && fixupMode == Immediate))) { // StrictlyEnforceRange always keeps an item in range updateHighlight(); topItem = currentItem; } FxViewItem *bottomItem = snapItemAt(tempPosition+highlightRangeEnd); - if (strictHighlightRange && currentItem && (!bottomItem || bottomItem->index != currentIndex)) { + if (strictHighlightRange && currentItem && (!bottomItem || (bottomItem->index != currentIndex && fixupMode == Immediate))) { // StrictlyEnforceRange always keeps an item in range updateHighlight(); bottomItem = currentItem; @@ -1013,7 +1015,7 @@ bool QQuickGridViewPrivate::flick(AxisData &data, qreal minExtent, qreal maxExte if (data.move.value() < minExtent) { if (snapMode == QQuickGridView::SnapOneRow) { // if we've been dragged < averageSize/2 then bias towards the next item - qreal dist = data.move.value() - (data.pressPos - data.dragStartOffset); + qreal dist = data.move.value() - data.pressPos; qreal bias = dist < rowSize()/2 ? rowSize()/2 : 0; if (isContentFlowReversed()) bias = -bias; @@ -1030,7 +1032,7 @@ bool QQuickGridViewPrivate::flick(AxisData &data, qreal minExtent, qreal maxExte if (data.move.value() > maxExtent) { if (snapMode == QQuickGridView::SnapOneRow) { // if we've been dragged < averageSize/2 then bias towards the next item - qreal dist = data.move.value() - (data.pressPos - data.dragStartOffset); + qreal dist = data.move.value() - data.pressPos; qreal bias = -dist < rowSize()/2 ? rowSize()/2 : 0; if (isContentFlowReversed()) bias = -bias; @@ -1309,13 +1311,14 @@ void QQuickGridView::setHighlightFollowsCurrentItem(bool autoHighlight) /*! - \qmlproperty model QtQuick::GridView::model - This property holds the model providing data for the grid. + \qmlproperty model QtQuick::GridView::model + This property holds the model providing data for the grid. The model provides the set of data that is used to create the items - in the view. Models can be created directly in QML using \l ListModel, \l XmlListModel - or \l VisualItemModel, or provided by C++ model classes. If a C++ model class is - used, it must be a subclass of \l QAbstractItemModel or a simple list. + in the view. Models can be created directly in QML using \l ListModel, + \l XmlListModel, \l DelegateModel, or \l ObjectModel, or provided by C++ + model classes. If a C++ model class is used, it must be a subclass of + \l QAbstractItemModel or a simple list. \sa {qml-data-models}{Data Models} */ |