Make the app launcher "linear"

Maybe linear is the wrong word to use but hear me out. At this point in SFOS design you can partially open the app launcher by holding the scroll.

This works fine for the first page of the launcher but once its completely open a swipe up get you to the second page instead of moving step by step (or scroll by scroll).

This behavior makes apps on the second page move to the top making them hard to reach.

Would be a nice improvement IMO. :smiley:

11 Likes

Indeed, that would be great. Apparently, implementation is not that trivial. Otherwise, we might already have this feature.

I think there is a patch for it

https://coderus.openrepos.net/pm2/project/launcher-free-scroll

7 Likes

Indeed. Functioning should be consistent on both/all app screens!

1 Like

Patches are nice but build in is better. :grinning:

2 Likes

I can’t believe that. Simply write the code from the patch into the standard edition to use this without patch but as standard… Or did I misunderstand something?

1 Like

A patch can be non-trivial.

But this one looks fairly simple:

--- a/usr/share/lipstick-jolla-home-qt5/launcher/Launcher.qml
+++ b/usr/share/lipstick-jolla-home-qt5/launcher/Launcher.qml
@@ -18,6 +18,10 @@

 SilicaListView {
     id: launcherPager
+
+    VerticalScrollDecorator {
+        flickable: launcherPager
+    }

     onVisibleChanged: if (!visible) { resetPosition(400) }

@@ -25,7 +29,7 @@
     property alias openedChildFolder: launcher.openedChildFolder

     onEditModeChanged: {
-        if (editMode) {
+        if (true || editMode) {
             snapMode = ListView.NoSnap
             highlightRangeMode = ListView.NoHighlightRange
         } else {
@@ -39,8 +43,8 @@
         width: launcherPager.width
         height: launcherPager.height
     }
-    snapMode: ListView.SnapOneItem
-    highlightRangeMode: ListView.StrictlyEnforceRange
+    snapMode: ListView.NoSnap
+    highlightRangeMode: ListView.NoHighlightRange
     cacheBuffer: height * model.count

     // Match velocity with EdgeLayer gesture transition's 200ms (0.2s below) duration
@@ -126,8 +130,8 @@
         ScriptAction {
             script: {
                 launcherPager.currentIndex = Math.round((contentY - originY) / height)
-                launcherPager.snapMode = ListView.SnapOneItem
-                launcherPager.highlightRangeMode = ListView.StrictlyEnforceRange
+                launcherPager.snapMode = ListView.NoSnap
+                launcherPager.highlightRangeMode = ListView.NoHighlightRange
             }
         }
     }

2 Likes