fix binding loop in Anime.qml

This commit is contained in:
end-4
2025-10-29 15:17:23 +01:00
parent 7476655302
commit eb6fca6697
@@ -119,16 +119,17 @@ Item {
} }
} }
property real pageKeyScrollAmount: booruResponseListView.height / 2
Keys.onPressed: (event) => { Keys.onPressed: (event) => {
tagInputField.forceActiveFocus() tagInputField.forceActiveFocus()
if (event.modifiers === Qt.NoModifier) { if (event.modifiers === Qt.NoModifier) {
if (event.key === Qt.Key_PageUp) { if (event.key === Qt.Key_PageUp) {
if (booruResponseListView.atYBeginning) return; if (booruResponseListView.atYBeginning) return;
booruResponseListView.contentY = Math.max(0, booruResponseListView.contentY - booruResponseListView.height / 2) booruResponseListView.contentY = Math.max(0, booruResponseListView.contentY - root.pageKeyScrollAmount)
event.accepted = true event.accepted = true
} else if (event.key === Qt.Key_PageDown) { } else if (event.key === Qt.Key_PageDown) {
if (booruResponseListView.atYEnd) return; if (booruResponseListView.atYEnd) return;
booruResponseListView.contentY = Math.min(booruResponseListView.contentHeight - booruResponseListView.height / 2, booruResponseListView.contentY + booruResponseListView.height / 2) booruResponseListView.contentY = Math.min(booruResponseListView.contentHeight, booruResponseListView.contentY + root.pageKeyScrollAmount)
event.accepted = true event.accepted = true
} }
} }
@@ -171,17 +172,20 @@ Item {
mouseScrollFactor: Config.options.interactions.scrolling.mouseScrollFactor * 1.4 mouseScrollFactor: Config.options.interactions.scrolling.mouseScrollFactor * 1.4
property int lastResponseLength: 0 property int lastResponseLength: 0
Connections {
model: ScriptModel { target: root
values: { function onResponsesChanged() {
if(root.responses.length > booruResponseListView.lastResponseLength) { if (root.responses.length > booruResponseListView.lastResponseLength) {
if (booruResponseListView.lastResponseLength > 0 && root.responses[booruResponseListView.lastResponseLength].provider != "system") if (booruResponseListView.lastResponseLength > 0 && root.responses[booruResponseListView.lastResponseLength].provider != "system")
booruResponseListView.contentY = booruResponseListView.contentY + root.scrollOnNewResponse booruResponseListView.contentY = booruResponseListView.contentY + root.scrollOnNewResponse
booruResponseListView.lastResponseLength = root.responses.length booruResponseListView.lastResponseLength = root.responses.length
} }
return root.responses
} }
} }
model: ScriptModel {
values: root.responses
}
delegate: BooruResponse { delegate: BooruResponse {
responseData: modelData responseData: modelData
tagInputField: root.inputField tagInputField: root.inputField