Bug 387797

Summary: Scrollviews automatically scroll up or down when you hover over a partially-visible list item
Product: [Frameworks and Libraries] libplasma Reporter: Patrick Silva <bugseforuns>
Component: componentsAssignee: Plasma Bugs List <plasma-bugs>
Status: RESOLVED FIXED    
Severity: minor CC: aibok42, Alydar715, bharadwaj.raju777, fanzhuyifan, heqromancer, iodreamify, kde.podagric, kdeu, matteo, me, med.medin.2014, mklapetek, nate, northivanastan, notuxius, phd, plasma-bugs, popov895, s_chriscollins, tgnff242, this.is.reid
Priority: HI Keywords: usability
Version: 5.78.0   
Target Milestone: ---   
Platform: Arch Linux   
OS: Linux   
See Also: https://bugs.kde.org/show_bug.cgi?id=437155
https://bugs.kde.org/show_bug.cgi?id=426015
https://bugreports.qt.io/browse/QTBUG-114574
Latest Commit: Version Fixed In: 6.0
Sentry Crash Report:
Attachments: demonstration
Video demo
new kickoff
clipboard applet has the same behavior

Description Patrick Silva 2017-12-11 16:03:45 UTC
Created attachment 109318 [details]
demonstration

Summary says by itself, I think this behavior annoying.
Watch my screencast recorded on Arch Linux, plasma 5.11.4.
Comment 1 Ivan S 2017-12-11 16:15:49 UTC
Video file is corrupt, and the behavior you appear to be describing is not a bug, though I definitely still think this should be changed. Recommend changing priority to wishlist.
Comment 2 Patrick Silva 2017-12-11 16:31:49 UTC
I think this issue is an usability problem at least.

I can play the video using chromium and Opera browsers. Firefox says the file is corrupted.
Comment 3 Nate Graham 2017-12-11 18:22:30 UTC
I can't open the video in any app on macOS. In the future, please attach videos in the webm format.
Comment 4 Ivan S 2017-12-11 18:31:22 UTC
Created attachment 109319 [details]
Video demo

Added an alternate video in WEBM format for Graham and others who have issues w/ MP4
Comment 5 Nate Graham 2017-12-11 18:33:50 UTC
Thanks Ivan. Yeah, that's bit of a strange user experience and I agree that we should change/fix it.
Comment 6 Alexander Mentyu 2018-03-09 13:45:42 UTC
Can reproduce in:

Plasma: 5.12.2
Apps: 17.12.2
Frameworks: 5.43.0
Qt: 5.10.1
Kernel: 4.14.22-1-MANJARO
OS: Netrunner Rolling
Comment 7 Patrick Silva 2018-09-08 14:24:28 UTC
In fact all tabs are affected by this annoying usability problem.
Comment 8 Patrick Silva 2020-08-31 16:28:07 UTC
*** Bug 426015 has been marked as a duplicate of this bug. ***
Comment 9 Nate Graham 2021-01-07 15:43:01 UTC
Git commit 59985c6ed75ac9d63aa92785f913fb6943671f03 by Nate Graham, on behalf of Mikel Johnson.
Committed on 07/01/2021 at 15:41.
Pushed by ngraham into branch 'master'.

Kickoff redesign

This commit completely overhauls Kickoff's user interface!

Original design (UI/UX) discussion
----------------------------------
- https://phabricator.kde.org/T12192
- https://invent.kde.org/plasma/plasma-desktop/-/merge_requests/186

Features / issues
-----------------
New:
- Double pane UI
- Both keyboard and mouse navigation have been overhauled
- Power/Session actions are available in the footer
- Improved RTL support
- Grid view
- All applications view
- Accessibility

Screenshots / Videos
--------------------
Apps

![image](/uploads/b44c0e36d7687b22f9df563ed19aad19/image.png)

Places

![image](/uploads/93ad74bd8e037dc70d4927eb20a8ec29/image.png)

Search

![image](/uploads/f77da9df55bd1f9e75c0b0de96eebfd8/image.png)

Accessibility

https://youtu.be/Vqah3yL5h_E

Bugs fixed
----------
Related: bug 357379, bug 369159, bug 369405, bug 378815, bug 387510, bug 391383, bug 392005, bug 393401, bug 394924, bug 398234, bug 398279, bug 398349, bug 398350, bug 398352, bug 398353, bug 405674, bug 408313, bug 410018, bug 412090, bug 415392, bug 416423, bug 419169, bug 423160, bug 425970, bug 426329, bug 427846, bug 428297

FIXED-IN: 5.21

@teams/vdg

A  +7    -0    applets/kickoff/ABOUT DESIGN CHANGES
D  +0    -71   applets/kickoff/DESIGN-GOALS
M  +6    -6    applets/kickoff/package/contents/config/config.qml
M  +45   -39   applets/kickoff/package/contents/config/main.xml
M  +9    -16   applets/kickoff/package/contents/ui/ActionMenu.qml
A  +144  -0    applets/kickoff/package/contents/ui/ApplicationsGroupView.qml     [License: GPL (v2+)]
M  +128  -46   applets/kickoff/package/contents/ui/ApplicationsView.qml
M  +12   -12   applets/kickoff/package/contents/ui/BaseView.qml
M  +13   -5    applets/kickoff/package/contents/ui/Breadcrumb.qml
M  +0    -2    applets/kickoff/package/contents/ui/ComputerView.qml
D  +0    -227  applets/kickoff/package/contents/ui/ConfigButtons.qml
M  +72   -18   applets/kickoff/package/contents/ui/ConfigGeneral.qml
C  +29   -43   applets/kickoff/package/contents/ui/FavoritesGridView.qml [from: applets/kickoff/package/contents/ui/FavoritesView.qml - 061% similarity]
M  +14   -24   applets/kickoff/package/contents/ui/FavoritesView.qml
R  +2    -3    applets/kickoff/package/contents/ui/FrequentlyUsedView.qml [from: applets/kickoff/package/contents/ui/OftenUsedView.qml - 089% similarity]
M  +599  -451  applets/kickoff/package/contents/ui/FullRepresentation.qml
M  +117  -64   applets/kickoff/package/contents/ui/Header.qml
M  +8    -9    applets/kickoff/package/contents/ui/Kickoff.qml
D  +0    -67   applets/kickoff/package/contents/ui/KickoffButton.qml
D  +0    -60   applets/kickoff/package/contents/ui/KickoffConfigurationButton.qml
A  +106  -0    applets/kickoff/package/contents/ui/KickoffGridItem.qml     [License: GPL (v2+)]
A  +345  -0    applets/kickoff/package/contents/ui/KickoffGridView.qml     [License: GPL (v2+)]
D  +0    -31   applets/kickoff/package/contents/ui/KickoffHighlight.qml
M  +45   -40   applets/kickoff/package/contents/ui/KickoffItem.qml
M  +184  -26   applets/kickoff/package/contents/ui/KickoffListView.qml
A  +145  -0    applets/kickoff/package/contents/ui/LeaveButtons.qml     [License: GPL (v2+)]
R  +13   -11   applets/kickoff/package/contents/ui/PlacesView.qml [from: applets/kickoff/package/contents/ui/LeaveView.qml - 065% similarity]
M  +0    -1    applets/kickoff/package/contents/ui/RecentlyUsedView.qml
M  +25   -13   applets/kickoff/package/contents/ui/SearchView.qml
M  +4    -2    applets/kickoff/package/contents/ui/SectionDelegate.qml
M  +2    -2    applets/kickoff/package/contents/ui/code/tools.js
M  +3    -3    applets/kickoff/package/metadata.desktop

https://invent.kde.org/plasma/plasma-desktop/commit/59985c6ed75ac9d63aa92785f913fb6943671f03
Comment 10 Patrick Silva 2021-01-17 11:07:23 UTC
Created attachment 134960 [details]
new kickoff

Unfortunately this annoying behavior persists with new kickoff.
Watch the attached screen recording please.

Operating System: KDE neon Unstable Edition
KDE Plasma Version: 5.20.80
KDE Frameworks Version: 5.79.0
Qt Version: 5.15.2
Comment 11 Patrick Silva 2021-01-17 15:03:57 UTC
Created attachment 134968 [details]
clipboard applet has the same behavior

Possibly this issue should be re-assigned to another product.
Clipboard applet is also affected if we set clipboard history to a value greater than 7 in its settings.
Comment 12 Nate Graham 2021-01-19 16:37:13 UTC
Yes, this is a generic issue in the Plasma ListItem. Moving.
Comment 13 Nate Graham 2021-02-25 16:28:21 UTC
*** Bug 432710 has been marked as a duplicate of this bug. ***
Comment 14 Nate Graham 2021-03-03 18:23:16 UTC
*** Bug 433904 has been marked as a duplicate of this bug. ***
Comment 15 Nate Graham 2021-04-01 19:16:33 UTC
*** Bug 429392 has been marked as a duplicate of this bug. ***
Comment 16 Nate Graham 2021-04-01 19:16:41 UTC
*** Bug 428965 has been marked as a duplicate of this bug. ***
Comment 17 Nate Graham 2021-04-01 19:16:57 UTC
*** Bug 342587 has been marked as a duplicate of this bug. ***
Comment 18 Nate Graham 2021-04-01 19:22:43 UTC
*** Bug 396951 has been marked as a duplicate of this bug. ***
Comment 19 Nate Graham 2021-04-01 19:54:54 UTC
Wow, tons of duplicates. I guess people really don't like this behavior.
Comment 20 Nate Graham 2021-04-01 21:32:33 UTC
Even a basic QtQuickControls 2 ScrollView still has this behavior. Still have not found what exactly is triggering it, whether that is something deep in Qt or a thing we are overlaying on top of it in Plasma-land. Because QQC2 apps that have ListView inside ScrollView do not seem to suffer from this issue.
Comment 21 Patrick Silva 2021-06-11 15:07:37 UTC
*** Bug 421865 has been marked as a duplicate of this bug. ***
Comment 22 Nate Graham 2021-06-15 23:31:20 UTC
*** Bug 438485 has been marked as a duplicate of this bug. ***
Comment 23 Nate Graham 2021-06-15 23:32:12 UTC
Dupes piling up; raising to VHI as this causes various small annoying usability issues all over the place in Plasma.
Comment 24 Nate Graham 2021-07-29 00:59:07 UTC
*** Bug 439085 has been marked as a duplicate of this bug. ***
Comment 25 Nate Graham 2021-09-21 19:29:41 UTC
*** Bug 442592 has been marked as a duplicate of this bug. ***
Comment 26 Nate Graham 2021-09-21 19:29:55 UTC
*** Bug 442594 has been marked as a duplicate of this bug. ***
Comment 27 Bharadwaj Raju 2021-11-27 10:35:02 UTC
(In reply to Nate Graham from comment #20)
> Even a basic QtQuickControls 2 ScrollView still has this behavior. Still
> have not found what exactly is triggering it, whether that is something deep
> in Qt or a thing we are overlaying on top of it in Plasma-land.

It's in QML ListView. It scrolls the view to move the current item into view. The docs say:

"If highlightFollowsCurrentItem is true, setting either of these properties will smoothly scroll the ListView so that the current item becomes visible."

However, it seems like the scrolling happens even if highlightFollowsCurrentItem is false.

I've tried messing around with custom highlight size and positioning, but haven't got a solution that way.

> QQC2 apps that have ListView inside ScrollView do not seem to suffer from this issue.

Because QQC2 list delegates generally don't set currentIndex on hover. Plasma's *ListItem components do.

We could probably make it so that hovering doesn't change currentIndex but only highlights, but that would make it so that there can be two highlighted items visible, with one of them being the actual current item and the other only a hover. But the idea is worth discussing, maybe we can have the hovered-but-not-current highlight be more subtle/subdued etc.
Comment 28 Bug Janitor Service 2021-11-27 13:41:56 UTC
A possibly relevant merge request was started @ https://invent.kde.org/frameworks/plasma-framework/-/merge_requests/398
Comment 29 Nate Graham 2022-01-11 21:30:36 UTC
*** Bug 447192 has been marked as a duplicate of this bug. ***
Comment 30 ratijas 2022-03-16 21:47:20 UTC
For the record, I'm not a fan either. At the very least it should come with an animated scrolling.
Comment 31 Bug Janitor Service 2022-11-02 09:43:11 UTC
A possibly relevant merge request was started @ https://invent.kde.org/frameworks/plasma-framework/-/merge_requests/641
Comment 32 Bug Janitor Service 2022-11-02 10:01:51 UTC
A possibly relevant merge request was started @ https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/2294
Comment 33 Nate Graham 2023-05-15 20:30:13 UTC
*** Bug 469466 has been marked as a duplicate of this bug. ***
Comment 34 Nate Graham 2023-06-14 20:26:20 UTC
I did some investigation of my own today and largely came to the same conclusion that Bharadwaj did. I think unfortunately we have to call this one an upstream issue--if not intentional--unless we want to get rid of the "currentItem follows hover" approach. But then there would be two selection highlight effects (one for the thing that's actually selected, and another for the thing that's hovered) and it would get very confusing very quickly. I think we would be trading one issue for another.

So as long as we use this behavior of setting the selected item to be the hovered one, we're stuck with this behavior until and unless QtQuick ListView gains an option to not scroll an only-partially-visible selected item fully into view. I submitted a Qt bug report about it: https://bugreports.qt.io/browse/QTBUG-114574

If and when Qt adds the functionality we need, we'll use it and re-open this bug report to track rolling it out.
Comment 35 Bharadwaj Raju 2023-11-13 19:24:43 UTC
Git commit b8705faa7b32e94920bb57faa871814b8a7faa56 by Bharadwaj Raju.
Committed on 13/11/2023 at 20:24.
Pushed by bharadwaj-raju into branch 'master'.

ExpandableListItem: Don't change currentIndex if item is partially visible

M  +9    -1    src/declarativeimports/plasmaextracomponents/qml/ExpandableListItem.qml

https://invent.kde.org/plasma/plasma-framework/-/commit/b8705faa7b32e94920bb57faa871814b8a7faa56
Comment 36 Bharadwaj Raju 2023-11-13 19:41:42 UTC
Git commit 31a547cc420c0778140fad7ed2b0adb2ff46a97f by Bharadwaj Raju.
Committed on 13/11/2023 at 20:41.
Pushed by bharadwaj-raju into branch 'master'.

applets/clipboard: Don't scroll when hovering on partially-visible list item

M  +6    -1    applets/clipboard/contents/ui/Menu.qml

https://invent.kde.org/plasma/plasma-workspace/-/commit/31a547cc420c0778140fad7ed2b0adb2ff46a97f
Comment 37 Nate Graham 2023-11-13 20:56:12 UTC
This is now fixed for the clipboard widget with https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/2294, and for all other system Tray widgets with https://invent.kde.org/plasma/plasma-framework/-/merge_requests/641. Thanks for getting it done, Bharadwaj!
Comment 38 fanzhuyifan 2024-01-04 03:34:00 UTC
(In reply to Nate Graham from comment #37)
> This is now fixed for the clipboard widget with
> https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/2294

It still scrolls automatically when I hover over the *first item* when it is only partially visible. But I guess a upstream fix would be far better than patching all the individual cases.
Comment 39 Patrick Silva 2024-01-04 17:17:58 UTC
I can also reproduce when hovering over the first item of Clipboard applet. It's still reproducible even when hovering over the last search result in Kickoff.

Operating System: Arch Linux 
KDE Plasma Version: 5.91.0
KDE Frameworks Version: 5.247.0
Qt Version: 6.7.0
Graphics Platform: Wayland
Comment 40 Nate Graham 2024-01-10 19:51:29 UTC
Can still reproduce in Kickoff, but not in Clipboard.

At this point we'll need new bug reports--one per individual widget affected. There is unfortunately not a way for us to fix it universally so each affected widget needs its own fix.
Comment 41 Nate Graham 2024-01-10 19:54:34 UTC
...And I see Kickoff already has a bug report: Bug 426015.