1
0
Fork 0
mirror of https://git.jami.net/savoirfairelinux/jami-client-qt.git synced 2025-08-19 14:15:54 +02:00

chatview: fix message styling and timestamps after removing a msg

https://git.jami.net/savoirfairelinux/jami-daemon/-/issues/316

Change-Id: I26cd21f91571021de960f83f189d7323336fa41b
This commit is contained in:
Andreas Traczyk 2022-10-27 13:57:11 -04:00 committed by Sébastien Blin
parent 9195cb0bc5
commit 4245c13a42

View file

@ -66,24 +66,24 @@ JamiListView {
var pItemIndex = itemIndex - 1
var nItem = root.itemAtIndex(itemIndex + 1)
var nItemIndex = itemIndex + 1
//Middle insertion
// middle insertion
if (pItem && nItem) {
computeTimestampVisibility(item, itemIndex, nItem, nItemIndex)
computeSequencing(nItemIndex, nItem, root.itemAtIndex(itemIndex + 2), item)
computeSequencing(item, nItem, root.itemAtIndex(itemIndex + 2))
}
// top buffer insertion = scroll up
if (pItem && !nItem) {
computeTimestampVisibility(item, itemIndex, pItem, pItemIndex)
computeSequencing(pItemIndex, pItem, item, root.itemAtIndex(itemIndex - 2))
computeSequencing(root.itemAtIndex(itemIndex - 2), pItem, item)
}
// bottom buffer insertion = scroll down
if (!pItem && nItem) {
computeTimestampVisibility(item, itemIndex, nItem, nItemIndex)
computeSequencing(nItemIndex, nItem, root.itemAtIndex(itemIndex + 2), item)
computeSequencing(item, nItem, root.itemAtIndex(itemIndex + 2))
}
// index 0 insertion = new message
if (itemIndex === 0) {
Qt.callLater(computeSequencing, itemIndex, item, root.itemAtIndex(itemIndex + 1), null)
Qt.callLater(computeSequencing, null, item, root.itemAtIndex(itemIndex + 1))
if (!computeTimestampVisibility(item, itemIndex, nItem, nItemIndex)) {
Qt.callLater(computeChatview, item, itemIndex)
}
@ -95,7 +95,7 @@ JamiListView {
}
}
function computeSequencing(index, item, nItem, pItem) {
function computeSequencing(pItem, item, nItem) {
if (root === undefined || !item)
return
@ -104,8 +104,7 @@ JamiListView {
else {
if (item.showTime) {
return true
}
if (nItem.author !== item.author) {
} else if (nItem.author !== item.author) {
return true
}
}
@ -117,8 +116,7 @@ JamiListView {
else {
if (pItem.showTime) {
return true
}
if (pItem.author !== item.author) {
} else if (pItem.author !== item.author) {
return true
}
}
@ -184,7 +182,29 @@ JamiListView {
boundsBehavior: Flickable.StopAtBounds
currentIndex: -1
// This connection to dataChanged resolves the styling for
// messages before and after an erased message.
Connections {
target: MessagesAdapter.messageListModel
function onDataChanged(tl, br, roles) {
if (!(roles.includes(MessageList.Body) &&
roles.includes(MessageList.PreviousBodies))) {
return
}
const staleIndex = proxyModel.mapFromSource(tl).row
var pItem = root.itemAtIndex(staleIndex - 1)
var nItem = root.itemAtIndex(staleIndex + 1)
var ppItem = root.itemAtIndex(staleIndex + 2)
var nnItem = root.itemAtIndex(staleIndex + 2)
computeTimestampVisibility(ppItem, staleIndex - 2, pItem, staleIndex - 1)
computeSequencing(ppItem, pItem, nItem)
computeTimestampVisibility(nItem, staleIndex + 1, nnItem, staleIndex + 2)
computeSequencing(pItem, nItem, nnItem)
}
}
model: SortFilterProxyModel {
id: proxyModel
// There doesn't seem to a subscription to property change
// events in the expression for sourceModel. This was originally
// masked behind an unchanging QSortFilterProxyModel object that