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

I tried now, and it works as intended & fine. Thanks very much again, @ohnonot !

edit: It’s easy to edit the qml files using the patch as a guide what to do. I did insert the new content of a line before the original code, then TAB + // to leave the original code as ‘comment’ for easier redo option later if necessary. (and also made backup before editing)

1 Like