mirror of
https://github.com/Nheko-Reborn/nheko.git
synced 2024-11-22 11:00:48 +03:00
Fix binding loop in roomlist
This commit is contained in:
parent
805f0a3032
commit
2d7c007eb2
2 changed files with 41 additions and 33 deletions
|
@ -546,66 +546,73 @@ Page {
|
||||||
visible: !collapsed
|
visible: !collapsed
|
||||||
width: roomItem.width - avatar.width
|
width: roomItem.width - avatar.width
|
||||||
|
|
||||||
NotificationBubble {
|
Item {
|
||||||
id: notificationBubble
|
|
||||||
|
|
||||||
Layout.alignment: Qt.AlignRight
|
|
||||||
Layout.leftMargin: Nheko.paddingSmall
|
|
||||||
Layout.preferredHeight: implicitHeight
|
|
||||||
Layout.preferredWidth: implicitWidth
|
|
||||||
bubbleBackgroundColor: roomItem.bubbleBackground
|
|
||||||
bubbleTextColor: roomItem.bubbleText
|
|
||||||
hasLoudNotification: roomItem.hasLoudNotification
|
|
||||||
mayBeVisible: !collapsed && (isSpace ? Settings.spaceNotifications : true)
|
|
||||||
notificationCount: roomItem.notificationCount
|
|
||||||
parent: isSpace ? titleRow : subtextRow
|
|
||||||
}
|
|
||||||
RowLayout {
|
|
||||||
id: titleRow
|
id: titleRow
|
||||||
|
|
||||||
Layout.alignment: Qt.AlignTop
|
Layout.alignment: Qt.AlignTop
|
||||||
Layout.preferredWidth: roomItem.width - avatar.width
|
|
||||||
spacing: Nheko.paddingSmall
|
|
||||||
|
|
||||||
Item {
|
|
||||||
Layout.alignment: Qt.AlignBottom
|
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
Layout.preferredHeight: subtitleText.implicitHeight
|
||||||
|
|
||||||
ElidedLabel {
|
ElidedLabel {
|
||||||
anchors.bottom: parent.bottom
|
id: titleText
|
||||||
|
|
||||||
|
anchors.left: parent.left
|
||||||
color: roomItem.importantText
|
color: roomItem.importantText
|
||||||
elideWidth: parent.width
|
elideWidth: parent.width - (timestamp.visible ? timestamp.implicitWidth : 0) - (spaceNotificationBubble.visible ? spaceNotificationBubble.implicitWidth : 0)
|
||||||
fullText: TimelineManager.htmlEscape(roomName)
|
fullText: TimelineManager.htmlEscape(roomName)
|
||||||
textFormat: Text.RichText
|
textFormat: Text.RichText
|
||||||
}
|
}
|
||||||
}
|
|
||||||
Label {
|
Label {
|
||||||
id: timestamp
|
id: timestamp
|
||||||
|
|
||||||
Layout.alignment: Qt.AlignRight | Qt.AlignBottom
|
anchors.baseline: titleText.baseline
|
||||||
|
anchors.right: parent.right
|
||||||
color: roomItem.unimportantText
|
color: roomItem.unimportantText
|
||||||
font.pixelSize: fontMetrics.font.pixelSize * 0.9
|
font.pixelSize: fontMetrics.font.pixelSize * 0.9
|
||||||
text: time
|
text: time
|
||||||
visible: !isInvite && !isSpace
|
visible: !isInvite && !isSpace
|
||||||
}
|
}
|
||||||
|
NotificationBubble {
|
||||||
|
id: spaceNotificationBubble
|
||||||
|
|
||||||
|
anchors.right: parent.right
|
||||||
|
bubbleBackgroundColor: roomItem.bubbleBackground
|
||||||
|
bubbleTextColor: roomItem.bubbleText
|
||||||
|
hasLoudNotification: roomItem.hasLoudNotification
|
||||||
|
mayBeVisible: !collapsed && (isSpace ? Settings.spaceNotifications : false)
|
||||||
|
notificationCount: roomItem.notificationCount
|
||||||
|
parent: isSpace ? titleRow : subtextRow
|
||||||
}
|
}
|
||||||
RowLayout {
|
}
|
||||||
|
Item {
|
||||||
id: subtextRow
|
id: subtextRow
|
||||||
|
|
||||||
Layout.alignment: Qt.AlignBottom
|
Layout.alignment: Qt.AlignBottom
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
height: visible ? 0 : undefined
|
Layout.preferredHeight: subtitleText.implicitHeight
|
||||||
spacing: 0
|
|
||||||
visible: !isSpace
|
visible: !isSpace
|
||||||
|
|
||||||
ElidedLabel {
|
ElidedLabel {
|
||||||
Layout.fillWidth: true
|
id: subtitleText
|
||||||
|
|
||||||
|
anchors.left: parent.left
|
||||||
color: roomItem.unimportantText
|
color: roomItem.unimportantText
|
||||||
elideWidth: width
|
elideWidth: subtextRow.width - (subtextNotificationBubble.visible ? subtextNotificationBubble.implicitWidth : 0)
|
||||||
font.pixelSize: fontMetrics.font.pixelSize * 0.9
|
font.pixelSize: fontMetrics.font.pixelSize * 0.9
|
||||||
fullText: TimelineManager.htmlEscape(lastMessage)
|
fullText: TimelineManager.htmlEscape(lastMessage)
|
||||||
textFormat: Text.RichText
|
textFormat: Text.RichText
|
||||||
}
|
}
|
||||||
|
NotificationBubble {
|
||||||
|
id: subtextNotificationBubble
|
||||||
|
|
||||||
|
anchors.baseline: subtitleText.baseline
|
||||||
|
anchors.right: parent.right
|
||||||
|
bubbleBackgroundColor: roomItem.bubbleBackground
|
||||||
|
bubbleTextColor: roomItem.bubbleText
|
||||||
|
hasLoudNotification: roomItem.hasLoudNotification
|
||||||
|
mayBeVisible: !collapsed
|
||||||
|
notificationCount: roomItem.notificationCount
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,6 +15,7 @@ Rectangle {
|
||||||
required property color bubbleTextColor
|
required property color bubbleTextColor
|
||||||
property bool mayBeVisible: true
|
property bool mayBeVisible: true
|
||||||
property alias font: notificationBubbleText.font
|
property alias font: notificationBubbleText.font
|
||||||
|
baselineOffset: notificationBubbleText.baseline - bubbleRoot.top
|
||||||
|
|
||||||
visible: mayBeVisible && notificationCount > 0
|
visible: mayBeVisible && notificationCount > 0
|
||||||
implicitHeight: notificationBubbleText.height + Nheko.paddingMedium
|
implicitHeight: notificationBubbleText.height + Nheko.paddingMedium
|
||||||
|
|
Loading…
Reference in a new issue