Implement shift+click/A-B message selection
This commit is contained in:
@@ -183,6 +183,7 @@ HRowLayout {
|
||||
PointHandler {
|
||||
id: mousePointHandler
|
||||
acceptedButtons: Qt.LeftButton
|
||||
acceptedModifiers: Qt.NoModifier
|
||||
acceptedPointerTypes:
|
||||
PointerDevice.GenericPointer | PointerDevice.Eraser
|
||||
|
||||
@@ -206,6 +207,24 @@ HRowLayout {
|
||||
property bool checkedNow: false
|
||||
}
|
||||
|
||||
PointHandler {
|
||||
id: mouseShiftPointHandler
|
||||
acceptedButtons: Qt.LeftButton
|
||||
acceptedModifiers: Qt.ShiftModifier
|
||||
acceptedPointerTypes:
|
||||
PointerDevice.GenericPointer | PointerDevice.Eraser
|
||||
|
||||
onActiveChanged: {
|
||||
if (active &&
|
||||
! eventDelegate.checked &&
|
||||
(! parent.hoveredLink ||
|
||||
! parent.enableLinkActivation)) {
|
||||
|
||||
eventList.delegatesFromLastToHereChecked(model.index)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
TapHandler {
|
||||
id: touchTapHandler
|
||||
acceptedButtons: Qt.LeftButton
|
||||
@@ -234,7 +253,8 @@ HRowLayout {
|
||||
z: -100
|
||||
color: eventDelegate.checked &&
|
||||
! contentLabel.selectedText &&
|
||||
! mousePointHandler.active ?
|
||||
! mousePointHandler.active &&
|
||||
! mouseShiftPointHandler.active ?
|
||||
theme.chat.message.checkedBackground :
|
||||
|
||||
isOwn?
|
||||
|
@@ -57,8 +57,6 @@ HColumnLayout {
|
||||
combine ? theme.spacing / (compact ? 4 : 2) :
|
||||
theme.spacing * (compact ? 1 : 2)
|
||||
|
||||
readonly property alias leftTapHandler: leftTapHandler
|
||||
|
||||
// Needed because of eventList's MouseArea which steals the
|
||||
// HSelectableLabel's MouseArea hover events
|
||||
onCursorShapeChanged: eventList.cursorShape = cursorShape
|
||||
@@ -114,11 +112,17 @@ HColumnLayout {
|
||||
}
|
||||
|
||||
TapHandler {
|
||||
id: leftTapHandler
|
||||
acceptedButtons: Qt.LeftButton
|
||||
acceptedModifiers: Qt.NoModifier
|
||||
onTapped: toggleChecked()
|
||||
}
|
||||
|
||||
TapHandler {
|
||||
acceptedButtons: Qt.LeftButton
|
||||
acceptedModifiers: Qt.ShiftModifier
|
||||
onTapped: eventList.delegatesFromLastToHereChecked(model.index)
|
||||
}
|
||||
|
||||
TapHandler {
|
||||
acceptedButtons: Qt.RightButton
|
||||
acceptedPointerTypes: PointerDevice.GenericPointer | PointerDevice.Pen
|
||||
@@ -151,6 +155,13 @@ HColumnLayout {
|
||||
onTriggered: eventList.checkedDelegates = {}
|
||||
}
|
||||
|
||||
HMenuItem {
|
||||
visible: model.index !== 0
|
||||
icon.name: "select-until-here"
|
||||
text: qsTr("Select until here")
|
||||
onTriggered: eventList.delegatesFromLastToHereChecked(model.index)
|
||||
}
|
||||
|
||||
HMenuItem {
|
||||
id: copyMedia
|
||||
icon.name: "copy-link"
|
||||
|
@@ -83,6 +83,7 @@ HMxcImage {
|
||||
|
||||
|
||||
TapHandler {
|
||||
acceptedModifiers: Qt.NoModifier
|
||||
onTapped:
|
||||
eventList.selectedCount ?
|
||||
eventDelegate.toggleChecked() : getOpenUrl(Qt.openUrlExternally)
|
||||
@@ -90,6 +91,14 @@ HMxcImage {
|
||||
gesturePolicy: TapHandler.ReleaseWithinBounds
|
||||
}
|
||||
|
||||
TapHandler {
|
||||
acceptedModifiers: Qt.ShiftModifier
|
||||
onTapped:
|
||||
eventList.delegatesFromLastToHereChecked(singleMediaInfo.index)
|
||||
|
||||
gesturePolicy: TapHandler.ReleaseWithinBounds
|
||||
}
|
||||
|
||||
HoverHandler {
|
||||
id: hover
|
||||
onHoveredChanged: {
|
||||
|
Reference in New Issue
Block a user