Como parar o ListView para "pular" quando o modelo é alterado

O que eu preciso fazer: Preciso criar umjanela de bate-papo usando umListView na QML que armazena as mensagens de bate-papo. eu colocolistView.positionViewAtEnd() para seguir as últimas mensagens. DesabilitopositionViewAtEnd quando rolar para cima, para poder ler as mensagens passadas sem pular no final toda vez que receber uma nova mensagem.

O problema: Depois de rolar para cima, sempreRecebo uma nova mensagem que salta no início da lista. Para resolver isso eu consigoguarde ocontentY da lista e redefina sempreonCountChanged manipulador é chamado (veja o código abaixo):

ListView {
    id: messagesList
    model: contact? contact.messages: []
    delegate: delegate
    anchors.fill: parent
    anchors.bottomMargin: 20
    height: parent.height
    anchors.margins: 10

    property int currentContentY

    onMovementEnded: {
       currentContentY = contentY
    }

    onCountChanged: {
        contentY = currentContentY
    }
    onContentYChanged: {
        console.log(".....contentY: " + contentY)
    }
}   

O problema é que, embora eu tenha definido o últimocontentY Antes de mudar o modelo, eu tinha olista ainda pula um pouco (vários pixels, não no final ou no começo) enem sempre pula. E quando eu vou para o topo da lista e imprimo ocontentY Eu recebo valores negativos. Teoricamente,contentY no início da lista deve ser0.

Alguém pode me dizer o que está errado? Ou talvez sugira outra solução para criar minha lista de mensagens?

Do que você com antecedência! :)

questionAnswers(2)

yourAnswerToTheQuestion