diff --git a/resources/qml/delegates/Reply.qml b/resources/qml/delegates/Reply.qml
index 4d4983ac..ece838b7 100644
--- a/resources/qml/delegates/Reply.qml
+++ b/resources/qml/delegates/Reply.qml
@@ -14,128 +14,88 @@ AbstractButton {
id: r
property color userColor: "red"
- property double proportionalHeight
- property int type
- property string typeString
- property int originalWidth
- property string blurhash
- property string body
- property string formattedBody
- property string eventId
- property string filename
- property string filesize
- property string url
- property bool isOnlyEmoji
- property bool isStateEvent
- property string userId
- property string userName
- property string thumbnailUrl
- property string roomTopic
- property string roomName
- property string callType
- property int duration
- property int encryptionError
- property int relatedEventCacheBuster
- property int maxWidth
property bool keepFullText: false
- height: replyContainer.height
- implicitHeight: replyContainer.height
- implicitWidth: visible? colorLine.width+Math.max(replyContainer.implicitWidth,userName_.fullTextWidth) : 0 // visible? seems to be causing issues
+ required property string eventId
+
+ property var room_: room
+
+ property string userId: eventId ? room.dataById(eventId, Room.UserId, "") : ""
+ property string userName: eventId ? room.dataById(eventId, Room.UserName, "") : ""
+ implicitHeight: replyContainer.implicitHeight
+ implicitWidth: replyContainer.implicitWidth
+ required property int maxWidth
NhekoCursorShape {
anchors.fill: parent
cursorShape: Qt.PointingHandCursor
}
- Rectangle {
- id: colorLine
-
- anchors.top: replyContainer.top
- anchors.bottom: replyContainer.bottom
- width: 4
- color: TimelineManager.userColor(userId, palette.base)
- }
-
onClicked: {
- let link = reply.child.linkAt != undefined && reply.child.linkAt(pressX-colorLine.width, pressY - userName_.implicitHeight);
+ let link = reply.child.linkAt != undefined && reply.child.linkAt(pressX-colorline.width, pressY - userName_.implicitHeight);
if (link) {
Nheko.openLink(link)
} else {
room.showEvent(r.eventId)
}
}
- onPressAndHold: replyContextMenu.show(reply.child.copyText, reply.child.linkAt(pressX-colorLine.width, pressY - userName_.implicitHeight), r.eventId)
+ onPressAndHold: replyContextMenu.show(reply.child.copyText, reply.child.linkAt(pressX-colorline.width, pressY - userName_.implicitHeight), r.eventId)
- ColumnLayout {
- id: replyContainer
+ contentItem: TimelineEvent {
+ id: timelineEvent
- anchors.left: colorLine.right
- width: parent.width - 4
- spacing: 0
+ isStateEvent: false
+ room: room_
+ eventId: r.eventId
+ replyTo: ""
+ mainInset: 4 + Nheko.paddingMedium
+ maxWidth: r.maxWidth
- TapHandler {
- acceptedButtons: Qt.RightButton
- onSingleTapped: replyContextMenu.show(reply.child.copyText, reply.child.linkAt(eventPoint.position.x, eventPoint.position.y - userName_.implicitHeight), r.eventId)
- gesturePolicy: TapHandler.ReleaseWithinBounds
- acceptedDevices: PointerDevice.Mouse | PointerDevice.Stylus | PointerDevice.TouchPad
- }
+ //height: replyContainer.implicitHeight
+ data: Row {
+ id: replyContainer
+
+ spacing: Nheko.paddingSmall
- AbstractButton {
- Layout.leftMargin: 4
- Layout.fillWidth: true
- contentItem: ElidedLabel {
- id: userName_
- fullText: userName
- color: r.userColor
- textFormat: Text.RichText
- width: parent.width
- elideWidth: width
+ Rectangle {
+ id: colorline
+
+ width: 4
+ height: content.height
+
+ color: TimelineManager.userColor(r.userId, palette.base)
}
- onClicked: room.openUserProfile(userId)
- }
- MessageDelegate {
- Layout.leftMargin: 4
- Layout.preferredHeight: height
- id: reply
- blurhash: r.blurhash
- body: r.body
- formattedBody: r.formattedBody
- eventId: r.eventId
- filename: r.filename
- filesize: r.filesize
- proportionalHeight: r.proportionalHeight
- type: r.type
- typeString: r.typeString ?? ""
- url: r.url
- thumbnailUrl: r.thumbnailUrl
- duration: r.duration
- originalWidth: r.originalWidth
- isOnlyEmoji: r.isOnlyEmoji
- isStateEvent: r.isStateEvent
- userId: r.userId
- userName: r.userName
- roomTopic: r.roomTopic
- roomName: r.roomName
- callType: r.callType
- relatedEventCacheBuster: r.relatedEventCacheBuster
- encryptionError: r.encryptionError
- // This is disabled so that left clicking the reply goes to its location
- enabled: false
- Layout.fillWidth: true
- isReply: true
- keepFullText: r.keepFullText
- }
+ Column {
+ id: content
+ spacing: 0
+
+ AbstractButton {
+ id: usernameBtn
+
+ contentItem: Label {
+ id: userName_
+ text: r.userName
+ color: r.userColor
+ textFormat: Text.RichText
+ width: timelineEvent.main?.width
+ }
+ onClicked: room.openUserProfile(r.userId)
+ }
+
+ data: [
+ usernameBtn, timelineEvent.main,
+ ]
+ }
+ }
}
- Rectangle {
+ background: Rectangle {
id: backgroundItem
z: -1
- anchors.fill: replyContainer
- property color userColor: TimelineManager.userColor(userId, palette.base)
+ property color userColor: TimelineManager.userColor(r.userId, palette.base)
property color bgColor: palette.base
color: Qt.tint(bgColor, Qt.hsla(userColor.hslHue, 0.5, userColor.hslLightness, 0.1))
}
|