Add keyboard controls for message focus/selection
This commit is contained in:
@@ -205,7 +205,8 @@ Rectangle {
|
||||
if (ev.matches(StandardKey.Copy) &&
|
||||
! area.selectedText &&
|
||||
eventList &&
|
||||
eventList.selectedCount) {
|
||||
(eventList.selectedCount ||
|
||||
eventList.currentIndex !== -1)) {
|
||||
|
||||
ev.accepted = true
|
||||
eventList.copySelectedDelegates()
|
||||
|
@@ -57,6 +57,8 @@ HColumnLayout {
|
||||
combine ? theme.spacing / (compact ? 4 : 2) :
|
||||
theme.spacing * (compact ? 1 : 2)
|
||||
|
||||
readonly property alias eventContent: eventContent
|
||||
|
||||
// Needed because of eventList's MouseArea which steals the
|
||||
// HSelectableLabel's MouseArea hover events
|
||||
onCursorShapeChanged: eventList.cursorShape = cursorShape
|
||||
@@ -209,7 +211,7 @@ HColumnLayout {
|
||||
qsTr("Copy text")
|
||||
|
||||
onTriggered: {
|
||||
if (! eventList.selectedCount) {
|
||||
if (! eventList.selectedCount && eventList.currentItem === -1){
|
||||
Clipboard.text = JSON.parse(model.source).body
|
||||
return
|
||||
}
|
||||
|
@@ -15,13 +15,51 @@ Rectangle {
|
||||
|
||||
|
||||
HShortcut {
|
||||
sequences: window.settings.keys.unselectAllMessages
|
||||
onActivated: eventList.checkedDelegates = {}
|
||||
sequences: window.settings.keys.unfocusOrUnselectAllMessages
|
||||
onActivated: {
|
||||
eventList.currentIndex !== -1 ?
|
||||
eventList.currentIndex = -1 :
|
||||
eventList.checkedDelegates = {}
|
||||
}
|
||||
}
|
||||
|
||||
HShortcut {
|
||||
sequences: window.settings.keys.focusPreviousMessage
|
||||
onActivated: eventList.incrementCurrentIndex()
|
||||
}
|
||||
|
||||
HShortcut {
|
||||
sequences: window.settings.keys.focusNextMessage
|
||||
onActivated:
|
||||
eventList.currentIndex === 0 ?
|
||||
eventList.currentIndex = -1 :
|
||||
eventList.decrementCurrentIndex()
|
||||
}
|
||||
|
||||
HShortcut {
|
||||
enabled: eventList.currentItem
|
||||
sequences: window.settings.keys.toggleSelectMessage
|
||||
onActivated: eventList.toggleCheck(eventList.currentIndex)
|
||||
}
|
||||
|
||||
HShortcut {
|
||||
enabled: eventList.currentItem
|
||||
sequences: window.settings.keys.selectMessagesUntilHere
|
||||
onActivated:
|
||||
eventList.delegatesFromLastToHereChecked(eventList.currentIndex)
|
||||
}
|
||||
|
||||
HShortcut {
|
||||
enabled: eventList.currentItem
|
||||
sequences: window.settings.keys.debugFocusedMessage
|
||||
onActivated:
|
||||
eventList.currentItem.eventContent.debugConsoleLoader.toggle()
|
||||
}
|
||||
|
||||
HListView {
|
||||
id: eventList
|
||||
clip: true
|
||||
keyNavigationWraps: false
|
||||
|
||||
anchors.fill: parent
|
||||
anchors.leftMargin: theme.spacing
|
||||
@@ -87,6 +125,13 @@ Rectangle {
|
||||
return
|
||||
}
|
||||
|
||||
if (! eventList.selectedCount && eventList.currentIndex !== -1) {
|
||||
Clipboard.text = JSON.parse(
|
||||
eventList.model.get(eventList.currentIndex).source
|
||||
).body
|
||||
return
|
||||
}
|
||||
|
||||
const contents = []
|
||||
|
||||
for (const model of eventList.getSortedCheckedDelegates()) {
|
||||
|
Reference in New Issue
Block a user