diff options
author | Claudio Cambra <claudio.cambra@gmail.com> | 2022-07-26 20:21:17 +0300 |
---|---|---|
committer | Claudio Cambra <claudio.cambra@gmail.com> | 2022-09-07 19:27:14 +0300 |
commit | b820df90b9a400f7791e1c62cad1d657293e3de5 (patch) | |
tree | 1baba58f0cf97f2d70734dabe5091a9bfa439677 /src/gui/tray | |
parent | 7ac1bdff1487a1284c119e651850c25be57b082d (diff) |
Improve activity list highlighting/keyboard item selection
Signed-off-by: Claudio Cambra <claudio.cambra@gmail.com>
Diffstat (limited to 'src/gui/tray')
-rw-r--r-- | src/gui/tray/ActivityItem.qml | 4 | ||||
-rw-r--r-- | src/gui/tray/ActivityList.qml | 38 |
2 files changed, 35 insertions, 7 deletions
diff --git a/src/gui/tray/ActivityItem.qml b/src/gui/tray/ActivityItem.qml index 9dbc41cd3..74e15b563 100644 --- a/src/gui/tray/ActivityItem.qml +++ b/src/gui/tray/ActivityItem.qml @@ -27,10 +27,6 @@ ItemDelegate { Accessible.name: (model.path !== "" && model.displayPath !== "") ? qsTr("Open %1 locally").arg(model.displayPath) : model.message Accessible.onPressAction: root.clicked() - background: Rectangle { - color: root.hovered ? Style.lightHover : "transparent" - } - NCToolTip { visible: root.hovered && !activityContent.childHovered && model.displayLocation !== "" text: qsTr("In %1").arg(model.displayLocation) diff --git a/src/gui/tray/ActivityList.qml b/src/gui/tray/ActivityList.qml index f3a6416c2..8106c939f 100644 --- a/src/gui/tray/ActivityList.qml +++ b/src/gui/tray/ActivityList.qml @@ -2,6 +2,7 @@ import QtQuick 2.15 import QtQuick.Controls 2.15 import com.nextcloud.desktopclient 1.0 as NC +import Style 1.0 ScrollView { id: controlRoot @@ -14,6 +15,7 @@ ScrollView { contentWidth: availableWidth padding: 1 + focus: false ScrollBar.horizontal.policy: ScrollBar.AlwaysOff @@ -24,19 +26,49 @@ ScrollView { ListView { id: activityList - keyNavigationEnabled: true - Accessible.role: Accessible.List Accessible.name: qsTr("Activity list") clip: true - spacing: 0 + currentIndex: -1 + interactive: true + + highlight: Rectangle { + id: activityHover + width: activityList.currentItem.width + height: activityList.currentItem.height + color: Style.lightHover + visible: activityList.activeFocus + } + highlightFollowsCurrentItem: true + highlightMoveDuration: 0 + highlightResizeDuration: 0 + highlightRangeMode: ListView.ApplyRange + preferredHighlightBegin: 0 + preferredHighlightEnd: controlRoot.height delegate: ActivityItem { isFileActivityList: controlRoot.isFileActivityList width: activityList.contentWidth flickable: activityList + onEntered: { + // When we set the currentIndex the list view will scroll... + // unless we tamper with the preferred highlight points to stop this. + const savedPreferredHighlightBegin = activityList.preferredHighlightBegin; + const savedPreferredHighlightEnd = activityList.preferredHighlightEnd; + // Set overkill values to make sure no scroll happens when we hover with mouse + activityList.preferredHighlightBegin = -controlRoot.height; + activityList.preferredHighlightEnd = controlRoot.height * 2; + + activityList.currentIndex = index + + // Reset original values so keyboard navigation makes list view scroll + activityList.preferredHighlightBegin = savedPreferredHighlightBegin; + activityList.preferredHighlightEnd = savedPreferredHighlightEnd; + + forceActiveFocus(); + } onClicked: { if (model.isCurrentUserFileActivity && model.openablePath) { openFile("file://" + model.openablePath); |