@@ -52,14 +52,14 @@ Rectangle {
5252 if (highlightIndex >= launcherListView.count) {
5353 highlightIndex = -1;
5454 }
55− moveAnimation.moveToIndex(Math.max(highlightIndex, 0));
55+ launcherListView.moveToIndex(Math.max(highlightIndex, 0));
5656 }
5757 function highlightPrevious() {
5858 highlightIndex--;
5959 if (highlightIndex <= -2) {
6060 highlightIndex = launcherListView.count - 1;
6161 }
62− moveAnimation.moveToIndex(Math.max(highlightIndex, 0));
62+ launcherListView.moveToIndex(Math.max(highlightIndex, 0));
6363 }
6464 function openQuicklist(index) {
6565 quickList.open(index);
@@ -136,7 +136,6 @@ Rectangle {
136136 highlightRangeMode: ListView.ApplyRange
137137 preferredHighlightBegin: (height - itemHeight) / 2
138138 preferredHighlightEnd: (height + itemHeight) / 2
139− spacing: units.gu(1)
140139
141140 // for the single peeking icon, when alert-state is set on delegate
142141 property int peekingIndex: -1
@@ -165,7 +164,7 @@ Rectangle {
165164 // The height of the area where the items reach the final folding angle
166165 property int foldingStopHeight: foldingStartHeight - itemHeight - spacing
167166 property int itemWidth: width * .75
168− property int itemHeight: itemWidth * 15 / 16
167+ property int itemHeight: itemWidth * 15 / 16 + units.gu(1)
169168 property int clickFlickSpeed: units.gu(60)
170169 property int draggedIndex: dndArea.draggedIndex
171170 property real realContentY: contentY - originY + topMargin
@@ -193,23 +192,24 @@ Rectangle {
193192
194193 UbuntuNumberAnimation {
195194 id: moveAnimation
195+ objectName: "moveAnimation"
196196 target: launcherListView
197197 property: "contentY"
198198 function moveTo(contentY) {
199199 from = launcherListView.contentY;
200200 to = contentY;
201− start();
201+ restart();
202202 }
203− function moveToIndex(index) {
204− var totalItemHeight = launcherListView.itemHeight + launcherListView.spacing
205− var itemPosition = index * totalItemHeight;
206− var height = launcherListView.height - launcherListView.topMargin - launcherListView.bottomMargin
207− var distanceToEnd = index == 0 || index == launcherListView.count - 1 ? 0 : totalItemHeight
208− if (itemPosition + totalItemHeight + distanceToEnd > launcherListView.contentY + launcherListView.originY + launcherListView.topMargin + height) {
209− moveAnimation.moveTo(itemPosition + launcherListView.itemHeight - launcherListView.topMargin - height + distanceToEnd - launcherListView.originY);
210− } else if (itemPosition - distanceToEnd < launcherListView.contentY - launcherListView.originY + launcherListView.topMargin) {
211− moveAnimation.moveTo(itemPosition - distanceToEnd - launcherListView.topMargin + launcherListView.originY);
212− }
203+ }
204+ function moveToIndex(index) {
205+ var totalItemHeight = launcherListView.itemHeight + launcherListView.spacing
206+ var itemPosition = index * totalItemHeight;
207+ var height = launcherListView.height - launcherListView.topMargin - launcherListView.bottomMargin
208+ var distanceToEnd = index == 0 || index == launcherListView.count - 1 ? 0 : totalItemHeight
209+ if (itemPosition + totalItemHeight + distanceToEnd > launcherListView.contentY + launcherListView.originY + launcherListView.topMargin + height) {
210+ moveAnimation.moveTo(itemPosition + launcherListView.itemHeight - launcherListView.topMargin - height + distanceToEnd - launcherListView.originY);
211+ } else if (itemPosition - distanceToEnd < launcherListView.contentY - launcherListView.originY + launcherListView.topMargin) {
212+ moveAnimation.moveTo(itemPosition - distanceToEnd - launcherListView.topMargin + launcherListView.originY);
213213 }
214214 }
215215
@@ -276,7 +276,7 @@ Rectangle {
276276 onAlertingChanged: {
277277 if(alerting) {
278278 if (!dragging && (launcherListView.peekingIndex === -1 || launcher.visibleWidth > 0)) {
279− moveAnimation.moveToIndex(index)
279+ launcherListView.moveToIndex(index)
280280 if (!dragging && launcher.state !== "visible") {
281281 peekingAnimation.start()
282282 }
@@ -433,10 +433,8 @@ Rectangle {
433433
434434 // First/last item do the scrolling at more than 12 degrees
435435 if (index == 0 || index == launcherListView.count - 1) {
436− if (clickedItem.angle > 12) {
437− launcherListView.flick(0, -launcherListView.clickFlickSpeed);
438− } else if (clickedItem.angle < -12) {
439− launcherListView.flick(0, launcherListView.clickFlickSpeed);
436+ if (clickedItem.angle > 12 || clickedItem.angle < -12) {
437+ launcherListView.moveToIndex(index);
440438 } else {
441439 root.applicationSelected(LauncherModel.get(index).appId);
442440 }
@@ -444,10 +442,8 @@ Rectangle {
444442 }
445443
446444 // the rest launches apps up to an angle of 30 degrees
447− if (clickedItem.angle > 30) {
448− launcherListView.flick(0, -launcherListView.clickFlickSpeed);
449− } else if (clickedItem.angle < -30) {
450− launcherListView.flick(0, launcherListView.clickFlickSpeed);
445+ if (clickedItem.angle > 30 || clickedItem.angle < -30) {
446+ launcherListView.moveToIndex(index);
451447 } else {
452448 root.applicationSelected(LauncherModel.get(index).appId);
453449 }