Fix timeline jump when scrolling

Ref: tree-threading
This commit is contained in:
Tusooa Zhu 2021-09-16 09:22:49 -04:00
parent 78f573af47
commit fe0e7bd63c
No known key found for this signature in database
GPG key ID: 7B467EDE43A08224
2 changed files with 18 additions and 4 deletions

View file

@ -469,7 +469,24 @@ const conversation = {
} else {
this.inlineDivePosition = id
}
this.setHighlight(id)
// Because the conversation can be unmounted when out of sight
// and mounted again when it comes into sight,
// the `mounted` or `created` function in `status` should not
// contain scrolling calls, as we do not want the page to jump
// when we scroll with an expanded conversation.
//
// Now the method is to rely solely on the `highlight` watcher
// in `status` components.
// In linear views, all statuses are rendered at all times, but
// in tree views, it is possible that a change in active status
// removes and adds status components (e.g. an originally child
// status becomes an ancestor status, and thus they will be
// different).
// Here, let the components be rendered first, in order to trigger
// the `highlight` watcher.
this.$nextTick(() => {
this.setHighlight(id)
})
},
goToCurrent () {
this.tryScrollTo(this.diveRoot || this.topLevel[0].id)

View file

@ -421,9 +421,6 @@ const Status = {
}
}
},
mounted () {
this.scrollIfHighlighted(this.highlight)
},
watch: {
'highlight': function (id) {
this.scrollIfHighlighted(id)