Add "Copy Link Address" context menu

Allows copying just the link address of a hyperlink.
This commit is contained in:
Kai Uwe Broulik
2024-12-05 13:41:04 +01:00
parent 3356e6c6cf
commit c585f3d8ae
8 changed files with 43 additions and 6 deletions

View File

@@ -78,6 +78,11 @@ QQC2.Control {
*/
signal selectedTextChanged(string selectedText)
/**
* @brief The user hovered link has changed.
*/
signal hoveredLinkChanged(string hoveredLink)
/**
* @brief Request a context menu be show for the message.
*/
@@ -108,6 +113,9 @@ QQC2.Control {
onSelectedTextChanged: selectedText => {
root.selectedTextChanged(selectedText);
}
onHoveredLinkChanged: hoveredLink => {
root.hoveredLinkChanged(hoveredLink);
}
onShowMessageMenu: root.showMessageMenu()
onRemoveLinkPreview: index => root.contentModel.closeLinkPreview(index)
}

View File

@@ -42,6 +42,11 @@ DelegateChooser {
*/
signal selectedTextChanged(string selectedText)
/**
* @brief The user hovered link has changed.
*/
signal hoveredLinkChanged(string hoveredLink)
/**
* @brief Request a context menu be show for the message.
*/
@@ -63,6 +68,7 @@ DelegateChooser {
delegate: TextComponent {
maxContentWidth: root.maxContentWidth
onSelectedTextChanged: root.selectedTextChanged(selectedText)
onHoveredLinkChanged: root.hoveredLinkChanged(hoveredLink)
onShowMessageMenu: root.showMessageMenu()
}
}

View File

@@ -182,6 +182,11 @@ TimelineDelegate {
*/
property string selectedText: ""
/**
* @brief The user hovered link.
*/
property string hoveredLink: ""
onIsTemporaryHighlightedChanged: if (isTemporaryHighlighted) {
temporaryHighlightTimer.start();
}
@@ -307,6 +312,9 @@ TimelineDelegate {
onSelectedTextChanged: selectedText => {
root.selectedText = selectedText;
}
onHoveredLinkChanged: hoveredLink => {
root.hoveredLink = hoveredLink;
}
onShowMessageMenu: _private.showMessageMenu()
showBackground: root.cardBackground && !NeoChatConfig.compactLayout
@@ -378,7 +386,7 @@ TimelineDelegate {
property bool showUserMessageOnRight: NeoChatConfig.showLocalMessagesOnRight && root.author.isLocalMember && !NeoChatConfig.compactLayout && !root.alwaysFillWidth
function showMessageMenu() {
RoomManager.viewEventMenu(root.eventId, root.room, root.author, root.selectedText);
RoomManager.viewEventMenu(root.eventId, root.room, root.author, root.selectedText, root.hoveredLink);
}
}
}