@@ -1,5 +1,6 @@
2 * Copyright (C) 2014 Canonical, Ltd.
2 * Copyright (C) 2014 Canonical, Ltd.
3+ * Copyright (C) 2020 UBports Foundation
4 * This program is free software; you can redistribute it and/or modify
5 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * it under the terms of the GNU General Public License as published by
@@ -29,6 +30,7 @@ Item {
29 readonly property alias currentItemIndex: row.currentItemIndex
30 readonly property alias currentItemIndex: row.currentItemIndex
30 property real lateralPosition: -1
31 property real lateralPosition: -1
31 property int alignment: Qt.AlignRight
32 property int alignment: Qt.AlignRight
33+ readonly property int rowContentX: row.contentX
33 property alias hideRow: row.hideRow
35 property alias hideRow: row.hideRow
34 property alias rowItemDelegate: row.delegate
36 property alias rowItemDelegate: row.delegate
@@ -133,12 +135,12 @@ Item {
134 if (root.alignment == Qt.AlignLeft) {
136 if (root.alignment == Qt.AlignLeft) {
135 // current item overlap on left
137 // current item overlap on left
136− if (row.currentItem && flickable.contentX > row.currentItem.x) {
138+ if (row.currentItem && flickable.contentX > (row.currentItem.x - row.contentX)) {
137− d.alignmentAdjustment -= (flickable.contentX - row.currentItem.x);
139+ d.alignmentAdjustment -= (flickable.contentX - (row.currentItem.x - row.contentX));
139 // current item overlap on right
141 // current item overlap on right
140− } else if (row.currentItem && flickable.contentX + flickable.width < row.currentItem.x + row.currentItem.width) {
142+ } else if (row.currentItem && flickable.contentX + flickable.width < (row.currentItem.x - row.contentX) + row.currentItem.width) {
141− d.alignmentAdjustment += (row.currentItem.x + row.currentItem.width) - (flickable.contentX + flickable.width);
143+ d.alignmentAdjustment += ((row.currentItem.x - row.contentX) + row.currentItem.width) - (flickable.contentX + flickable.width);
144 // gap between left and row?
146 // gap between left and row?
@@ -155,12 +157,12 @@ Item {
155 d.alignmentAdjustment -= flickable.contentX;
157 d.alignmentAdjustment -= flickable.contentX;
157 // current item overlap on left
159 // current item overlap on left
158− } else if (row.currentItem && (flickable.contentX + flickable.width) < (row.width - row.currentItem.x)) {
160+ } else if (row.currentItem && (flickable.contentX + flickable.width) < (row.width - (row.currentItem.x - row.contentX))) {
159− d.alignmentAdjustment += ((row.width - row.currentItem.x) - (flickable.contentX + flickable.width));
161+ d.alignmentAdjustment += ((row.width - (row.currentItem.x - row.contentX)) - (flickable.contentX + flickable.width));
161 // current item overlap on right
163 // current item overlap on right
162− } else if (row.currentItem && flickable.contentX > (row.width - row.currentItem.x - row.currentItem.width)) {
164+ } else if (row.currentItem && flickable.contentX > (row.width - (row.currentItem.x - row.contentX) - row.currentItem.width)) {
163− d.alignmentAdjustment -= flickable.contentX - (row.width - row.currentItem.x - row.currentItem.width);
165+ d.alignmentAdjustment -= flickable.contentX - (row.width - (row.currentItem.x - row.contentX) - row.currentItem.width);