@@ -38,6 +38,8 @@ PreviewWidget {
38 model: root.widgetData["sources"]
38 model: root.widgetData["sources"]
39 clip: true
39 clip: true
41+ onCurrentIndexChanged: overlay.updateInitialItem()
41 LazyImage {
43 LazyImage {
42 objectName: "placeholderScreenshot"
44 objectName: "placeholderScreenshot"
@@ -65,9 +67,8 @@ PreviewWidget {
65 id: mouseArea
67 id: mouseArea
66 anchors.fill: parent
68 anchors.fill: parent
67 onClicked: {
69 onClicked: {
68− overlay.delegateItem.currentIndex = index;
70+ previewImageListView.currentIndex = index;
69− overlay.initialX = rootItem.mapFromItem(parent, 0, 0).x;
71+ overlay.updateInitialItem();
70− overlay.initialY = rootItem.mapFromItem(parent, 0, 0).y;
71 overlay.show();
72 overlay.show();
@@ -80,6 +81,13 @@ PreviewWidget {
80 parent: rootItem
81 parent: rootItem
81 anchors.fill: parent
82 anchors.fill: parent
84+ function updateInitialItem() {
85+ initialX = rootItem.mapFromItem(previewImageListView.currentItem, 0, 0).x;
86+ initialY = rootItem.mapFromItem(previewImageListView.currentItem, 0, 0).y;
87+ initialWidth = previewImageListView.currentItem.width;
88+ initialHeight = previewImageListView.currentItem.height;
83 delegate: ListView {
91 delegate: ListView {
84 id: overlayListView
92 id: overlayListView
85 objectName: "overlayListView"
93 objectName: "overlayListView"
@@ -90,13 +98,12 @@ PreviewWidget {
90 snapMode: ListView.SnapOneItem
98 snapMode: ListView.SnapOneItem
91 boundsBehavior: Flickable.DragAndOvershootBounds
99 boundsBehavior: Flickable.DragAndOvershootBounds
92 model: root.widgetData["sources"]
100 model: root.widgetData["sources"]
101+ currentIndex: previewImageListView.currentIndex
94 onCurrentIndexChanged: {
103 onCurrentIndexChanged: {
95− previewImageListView.currentIndex = currentIndex;
104+ // if the index changed while overlay is visible, it was from user interaction,
96− overlay.initialX = rootItem.mapFromItem(previewImageListView.currentItem, 0, 0).x;
105+ // let's update the index of the original listview
97− overlay.initialY = rootItem.mapFromItem(previewImageListView.currentItem, 0, 0).y;
98− overlay.initialWidth = previewImageListView.currentItem.width;
106+ if (overlay.visible) previewImageListView.currentIndex = currentIndex;
99− overlay.initialHeight = previewImageListView.currentItem.height;
102 delegate: Image {
109 delegate: Image {