Fix ListView transition bugs?

This commit is contained in:
miruka 2019-08-19 20:50:14 -04:00
parent 16ac335d43
commit 57b13131a0
2 changed files with 24 additions and 9 deletions

View File

@ -2,6 +2,7 @@ import QtQuick 2.12
import QtQuick.Controls 2.12 import QtQuick.Controls 2.12
ListView { ListView {
id: listView
interactive: false interactive: false
currentIndex: -1 currentIndex: -1
highlightMoveDuration: theme.animationDuration highlightMoveDuration: theme.animationDuration
@ -21,16 +22,24 @@ ListView {
opacity: theme.controls.interactiveRectangle.checkedOpacity opacity: theme.controls.interactiveRectangle.checkedOpacity
} }
// Important:
// https://doc.qt.io/qt-5/qml-qtquick-viewtransition.html#handling-interrupted-animations
populate: add
displaced: move
add: Transition { add: Transition {
ParallelAnimation {
HNumberAnimation { property: "opacity"; from: 0; to: 1 }
HNumberAnimation { properties: "x,y"; from: 100 } HNumberAnimation { properties: "x,y"; from: 100 }
} }
}
move: Transition { move: Transition {
ParallelAnimation {
HNumberAnimation { property: "opacity"; to: 1 }
HNumberAnimation { properties: "x,y" } HNumberAnimation { properties: "x,y" }
} }
displaced: Transition {
HNumberAnimation { properties: "x,y" }
} }
remove: Transition { remove: Transition {

View File

@ -11,9 +11,9 @@ HListView {
readonly property var collapseAccounts: window.uiState.collapseAccounts readonly property var collapseAccounts: window.uiState.collapseAccounts
readonly property string filter: paneToolBar.roomFilter readonly property string filter: paneToolBar.roomFilter
onOriginSourceChanged: Qt.callLater(filterSource) onOriginSourceChanged: filterLimiter.requestFire()
onFilterChanged: Qt.callLater(filterSource) onFilterChanged: filterLimiter.requestFire()
onCollapseAccountsChanged: Qt.callLater(filterSource) onCollapseAccountsChanged: filterLimiter.requestFire()
function filterSource() { function filterSource() {
@ -101,6 +101,12 @@ HListView {
} }
HRateLimiter {
id: filterLimiter
cooldown: 16
onFired: filterSource()
}
HRateLimiter { HRateLimiter {
id: activateLimiter id: activateLimiter
onFired: currentItem.item.activate() onFired: currentItem.item.activate()