Add context menu to copy message link URLs
This commit is contained in:
parent
bf2004ed84
commit
01f8bc3d6c
2
TODO.md
2
TODO.md
|
@ -26,6 +26,7 @@
|
||||||
- Message position after daybreak delegate (fixed by commit 57b1313 ?)
|
- Message position after daybreak delegate (fixed by commit 57b1313 ?)
|
||||||
- [hr not working](https://bugreports.qt.io/browse/QTBUG-74342)
|
- [hr not working](https://bugreports.qt.io/browse/QTBUG-74342)
|
||||||
- Terrible performance using `QT_QPA_PLATFORM=wayland-egl`, must use `xcb`
|
- Terrible performance using `QT_QPA_PLATFORM=wayland-egl`, must use `xcb`
|
||||||
|
- Verify big avatars aren't downloaded uselessly
|
||||||
|
|
||||||
- UI
|
- UI
|
||||||
- Set an explicit placeholder text color for text field/area
|
- Set an explicit placeholder text color for text field/area
|
||||||
|
@ -35,7 +36,6 @@
|
||||||
- Room header descriptions: styled text
|
- Room header descriptions: styled text
|
||||||
|
|
||||||
- Message selection
|
- Message selection
|
||||||
- Copy link
|
|
||||||
- Make scroll wheel usable
|
- Make scroll wheel usable
|
||||||
- Copy to X11 selection
|
- Copy to X11 selection
|
||||||
- Images don't load correctly in TextEdit
|
- Images don't load correctly in TextEdit
|
||||||
|
|
3
src/icons/thin/copy-link.svg
Normal file
3
src/icons/thin/copy-link.svg
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
<svg height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="m6.188 8.719c.439-.439.926-.801 1.444-1.087 2.887-1.591 6.589-.745 8.445 2.069l-2.246 2.245c-.644-1.469-2.243-2.305-3.834-1.949-.599.134-1.168.433-1.633.898l-4.304 4.306c-1.307 1.307-1.307 3.433 0 4.74s3.433 1.307 4.74 0l1.327-1.327c1.207.479 2.501.67 3.779.575l-2.929 2.929c-2.511 2.511-6.582 2.511-9.093 0s-2.511-6.582 0-9.093zm6.836-6.836-2.929 2.929c1.277-.096 2.572.096 3.779.574l1.326-1.326c1.307-1.307 3.433-1.307 4.74 0s1.307 3.433 0 4.74l-4.305 4.305c-1.311 1.311-3.44 1.3-4.74 0-.303-.303-.564-.68-.727-1.051l-2.246 2.245c.236.358.481.667.796.982.812.812 1.846 1.417 3.036 1.704 1.542.371 3.194.166 4.613-.617.518-.286 1.005-.648 1.444-1.087l4.304-4.305c2.512-2.511 2.512-6.582.001-9.093-2.511-2.51-6.581-2.51-9.092 0z"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 836 B |
Before Width: | Height: | Size: 429 B After Width: | Height: | Size: 429 B |
|
@ -38,7 +38,6 @@ FocusScope {
|
||||||
|
|
||||||
readonly property alias dragPoint: dragHandler.centroid
|
readonly property alias dragPoint: dragHandler.centroid
|
||||||
readonly property alias dragPosition: dragHandler.centroid.position
|
readonly property alias dragPosition: dragHandler.centroid.position
|
||||||
readonly property alias contextMenu: contextMenu
|
|
||||||
|
|
||||||
|
|
||||||
function clearSelection() {
|
function clearSelection() {
|
||||||
|
@ -74,23 +73,5 @@ FocusScope {
|
||||||
TapHandler {
|
TapHandler {
|
||||||
acceptedButtons: Qt.LeftButton
|
acceptedButtons: Qt.LeftButton
|
||||||
onTapped: clearSelection()
|
onTapped: clearSelection()
|
||||||
onLongPressed: contextMenu.popup()
|
|
||||||
}
|
|
||||||
|
|
||||||
TapHandler {
|
|
||||||
acceptedButtons: Qt.RightButton
|
|
||||||
onTapped: contextMenu.popup()
|
|
||||||
onLongPressed: contextMenu.popup()
|
|
||||||
}
|
|
||||||
|
|
||||||
HMenu {
|
|
||||||
id: contextMenu
|
|
||||||
|
|
||||||
HMenuItem {
|
|
||||||
icon.name: "copy"
|
|
||||||
text: qsTr("Copy")
|
|
||||||
enabled: Boolean(joinedSelection)
|
|
||||||
onTriggered: Utils.copyToClipboard(joinedSelection)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,6 +7,9 @@ Row {
|
||||||
id: eventContent
|
id: eventContent
|
||||||
spacing: theme.spacing / 2
|
spacing: theme.spacing / 2
|
||||||
|
|
||||||
|
readonly property string hoveredLink:
|
||||||
|
nameLabel.hoveredLink || contentLabel.hoveredLink
|
||||||
|
|
||||||
readonly property string eventText: Utils.processedEventText(model)
|
readonly property string eventText: Utils.processedEventText(model)
|
||||||
readonly property string eventTime: Utils.formatTime(model.date)
|
readonly property string eventTime: Utils.formatTime(model.date)
|
||||||
readonly property int eventTimeSpaces: 2
|
readonly property int eventTimeSpaces: 2
|
||||||
|
|
|
@ -60,7 +60,51 @@ Column {
|
||||||
}
|
}
|
||||||
|
|
||||||
EventContent {
|
EventContent {
|
||||||
|
id: eventContent
|
||||||
x: onRight ? parent.width - width : 0
|
x: onRight ? parent.width - width : 0
|
||||||
|
|
||||||
Behavior on x { HNumberAnimation {} }
|
Behavior on x { HNumberAnimation {} }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
TapHandler {
|
||||||
|
acceptedButtons: Qt.RightButton
|
||||||
|
onTapped: {
|
||||||
|
contextMenu.link = eventContent.hoveredLink
|
||||||
|
contextMenu.popup()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
TapHandler {
|
||||||
|
acceptedButtons: Qt.LeftButton | Qt.RightButton
|
||||||
|
onLongPressed: {
|
||||||
|
contextMenu.link = eventContent.hoveredLink
|
||||||
|
contextMenu.popup()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
HMenu {
|
||||||
|
id: contextMenu
|
||||||
|
|
||||||
|
property string link: ""
|
||||||
|
|
||||||
|
onClosed: link = ""
|
||||||
|
|
||||||
|
HMenuItem {
|
||||||
|
id: copyLink
|
||||||
|
icon.name: "copy-link"
|
||||||
|
text: qsTr("Copy link address")
|
||||||
|
visible: Boolean(contextMenu.link)
|
||||||
|
onTriggered: Utils.copyToClipboard(contextMenu.link)
|
||||||
|
}
|
||||||
|
|
||||||
|
HMenuItem {
|
||||||
|
icon.name: "copy-text"
|
||||||
|
text: qsTr("Copy text")
|
||||||
|
visible: enabled || ! copyLink.visible
|
||||||
|
enabled: Boolean(selectableLabelContainer.joinedSelection)
|
||||||
|
onTriggered:
|
||||||
|
Utils.copyToClipboard(selectableLabelContainer.joinedSelection)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user