Improve activity list highlighting/keyboard item selection

Signed-off-by: Claudio Cambra <claudio.cambra@gmail.com>
This commit is contained in:
Claudio Cambra 2022-07-26 19:21:17 +02:00
parent 7ac1bdff14
commit b820df90b9
2 changed files with 35 additions and 7 deletions

View File

@ -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)

View File

@ -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);