@@ -28,7 +28,7 @@ Item {
2828 rotation: inverted ? 180 : 0
2929
3030 property var model
31− property bool inverted: false
31+ property bool inverted: true
3232 property bool dragging: false
3333 property bool moving: launcherListView.moving || launcherListView.flicking || dndArea.draggedItem !== undefined
3434 property int dragPosition: 0
@@ -117,6 +117,7 @@ Item {
117117 highlightRangeMode: ListView.ApplyRange
118118 preferredHighlightBegin: (height - itemSize) / 2
119119 preferredHighlightEnd: (height + itemSize) / 2
120+ layoutDirection: root.inverted ? Qt.RightToLeft : Qt.LeftToRight
120121
121122 // The height of the area where icons start getting folded
122123 property int foldingAreaHeight: itemSize * 0.75
@@ -133,7 +134,6 @@ Item {
133134 itemHeight: launcherListView.itemSize
134135 itemWidth: launcherListView.itemSize
135136 width: itemWidth
136−// height: dragging ? units.gu(2) : launcherListView.itemSize
137137 height: itemHeight
138138 iconName: model.icon
139139 inverted: root.inverted
@@ -148,7 +148,7 @@ Item {
148148 when: dragging
149149 PropertyChanges {
150150 target: launcherDelegate
151− angle: 80
151+ angle: root.inverted ? -80 : 80
152152 offset: effectiveHeight / 2
153153 height: effectiveHeight
154154 }
@@ -162,30 +162,6 @@ Item {
162162 NumberAnimation { properties: "height"; duration: 150 }
163163 }
164164 ]
165−
166−/* onClicked: {
167− // First/last item do the scrolling at more than 12 degrees
168− if (index == 0 || index == launcherListView.count -1) {
169− if (angle > 12) {
170− launcherListView.flick(0, -launcherListView.clickFlickSpeed);
171− } else if (angle < -12) {
172− launcherListView.flick(0, launcherListView.clickFlickSpeed);
173− } else {
174− root.applicationSelected(LauncherModel.get(index).desktopFile);
175− }
176− return;
177− }
178−
179− // the rest launches apps up to an angle of 30 degrees
180− if (angle > 30) {
181− launcherListView.flick(0, -launcherListView.clickFlickSpeed);
182− } else if (angle < -30) {
183− launcherListView.flick(0, launcherListView.clickFlickSpeed);
184− } else {
185− root.applicationSelected(LauncherModel.get(index).desktopFile);
186− }
187− }
188− */
189165 }
190166
191167 MouseArea {
@@ -214,10 +190,36 @@ Item {
214190 var realContentY = launcherListView.contentY + launcherListView.topMargin
215191 selectedItem = launcherListView.itemAt(mouseX, mouseY + realContentY)
216192 selectedItem.highlighted = true
217−
218193 }
219194
220195 onClicked: {
196+ var realItemSize = launcherListView.itemSize + launcherListView.spacing
197+ var realContentY = launcherListView.contentY + launcherListView.topMargin
198+ var index = Math.floor((mouseY + realContentY) / realItemSize);
199+ var clickedItem = launcherListView.itemAt(mouseX, mouseY + realContentY)
200+
201+ print("clicked on", index, clickedItem)
202+
203+ // First/last item do the scrolling at more than 12 degrees
204+ if (index == 0 || index == launcherListView.count -1) {
205+ if (clickedItem.angle > 12) {
206+ launcherListView.flick(0, -launcherListView.clickFlickSpeed);
207+ } else if (clickedItem.angle < -12) {
208+ launcherListView.flick(0, launcherListView.clickFlickSpeed);
209+ } else {
210+ root.applicationSelected(LauncherModel.get(index).desktopFile);
211+ }
212+ return;
213+ }
214+
215+ // the rest launches apps up to an angle of 30 degrees
216+ if (clickedItem.angle > 30) {
217+ launcherListView.flick(0, -launcherListView.clickFlickSpeed);
218+ } else if (clickedItem.angle < -30) {
219+ launcherListView.flick(0, launcherListView.clickFlickSpeed);
220+ } else {
221+ root.applicationSelected(LauncherModel.get(index).desktopFile);
222+ }
221223 }
222224
223225 onCanceled: {
@@ -238,7 +240,6 @@ Item {
238240
239241 onPressAndHold: {
240242 var realItemSize = launcherListView.itemSize + launcherListView.spacing
241−
242243 var realContentY = launcherListView.contentY + launcherListView.topMargin
243244 draggedIndex = Math.floor((mouseY + realContentY) / realItemSize);
244245