@@ -67,9 +67,9 @@ PreviewWidget {
6767 anchors.fill: parent
6868 onClicked: {
6969 slideShowListView.currentIndex = index;
70− slideShow.initialX = rootItem.mapFromItem(parent, 0, 0).x
71− slideShow.initialY = rootItem.mapFromItem(parent, 0, 0).y
72− slideShow.visible = true;
70+ slideShow.initialX = rootItem.mapFromItem(parent, 0, 0).x;
71+ slideShow.initialY = rootItem.mapFromItem(parent, 0, 0).y;
72+ slideShow.open();
7373 }
7474 }
7575 }
@@ -83,13 +83,15 @@ PreviewWidget {
8383 readonly property real scaleProgress: (scale - initialScale) / (1.0 - initialScale)
8484 property real initialX: 0
8585 property real initialY: 0
86+ property bool opened: false
87+ property bool opening: false
8688
8789 parent: rootItem
8890 width: parent.width
8991 height: parent.height
90− visible: false
92+ visible: scale > initialScale
9193 clip: visible && scale < 1.0
92− scale: visible ? 1.0 : initialScale
94+ scale: opened ? 1.0 : initialScale
9395 transformOrigin: Item.TopLeft
9496 transform: Translate {
9597 x: slideShow.initialX - slideShow.initialX * slideShow.scaleProgress
@@ -98,9 +100,21 @@ PreviewWidget {
98100 color: "black"
99101 radius: units.gu(1) - units.gu(1) * slideShow.scaleProgress
100102
103+ function open() {
104+ opening = true;
105+ opened = true;
106+ }
107+
108+ function close() {
109+ opening = false;
110+ opened = false;
111+ }
112+
101113 Behavior on scale {
102− enabled: !slideShow.visible
103− UbuntuNumberAnimation { duration: UbuntuAnimation.FastDuration }
114+ UbuntuNumberAnimation {
115+ duration: slideShow.opening ? UbuntuAnimation.FastDuration :
116+ UbuntuAnimation.FastDuration / 3
117+ }
104118 }
105119
106120 Flickables.ListView {
@@ -160,7 +174,7 @@ PreviewWidget {
160174 width: units.gu(8)
161175 height: width
162176
163− onClicked: slideShow.visible = false
177+ onClicked: slideShow.close()
164178
165179 Rectangle {
166180 anchors.fill: parent