修复FluCarousel设置autoPlay为false时手动翻页仍触发自动轮播翻页问题. fixed #563

修复FluCarousel设置autoPlay为false时不能无限向左/右翻页的问题.
This commit is contained in:
Polaris-Night 2025-02-17 23:24:31 +08:00
parent 7a6efa41fb
commit 65b7737454
2 changed files with 18 additions and 12 deletions

View File

@ -24,7 +24,7 @@ Item {
} }
QtObject{ QtObject{
id:d id:d
property bool flagXChanged: true property bool flagXChanged: false
property bool isAnimEnable: control.autoPlay && list_view.count>3 property bool isAnimEnable: control.autoPlay && list_view.count>3
function setData(data){ function setData(data){
if(!data){ if(!data){
@ -88,14 +88,17 @@ Item {
} }
} }
onMovementEnded:{ onMovementEnded:{
d.flagXChanged = false
list_view.highlightMoveDuration = 0
currentIndex = list_view.contentX/list_view.width currentIndex = list_view.contentX/list_view.width
if(currentIndex === 0){ if(currentIndex === 0){
currentIndex = list_view.count-2 currentIndex = list_view.count-2
}else if(currentIndex === list_view.count-1){ }else if(currentIndex === list_view.count-1){
currentIndex = 1 currentIndex = 1
} }
d.flagXChanged = false if(d.isAnimEnable){
timer_run.restart() timer_run.restart()
}
} }
onMovementStarted: { onMovementStarted: {
d.flagXChanged = true d.flagXChanged = true
@ -104,12 +107,12 @@ Item {
onContentXChanged: { onContentXChanged: {
if(d.flagXChanged){ if(d.flagXChanged){
var maxX = Math.min(list_view.width*(currentIndex+1),list_view.count*list_view.width) var maxX = Math.min(list_view.width*(currentIndex+1),list_view.count*list_view.width)
var minY = Math.max(0,(list_view.width*(currentIndex-1))) var minX = Math.max(0,(list_view.width*(currentIndex-1)))
if(contentX>=maxX){ if(contentX>=maxX){
contentX = maxX contentX = maxX
} }
if(contentX<=minY){ if(contentX<=minX){
contentX = minY contentX = minX
} }
} }
} }

View File

@ -24,7 +24,7 @@ Item {
} }
QtObject{ QtObject{
id:d id:d
property bool flagXChanged: true property bool flagXChanged: false
property bool isAnimEnable: control.autoPlay && list_view.count>3 property bool isAnimEnable: control.autoPlay && list_view.count>3
function setData(data){ function setData(data){
if(!data){ if(!data){
@ -88,14 +88,17 @@ Item {
} }
} }
onMovementEnded:{ onMovementEnded:{
d.flagXChanged = false
list_view.highlightMoveDuration = 0
currentIndex = list_view.contentX/list_view.width currentIndex = list_view.contentX/list_view.width
if(currentIndex === 0){ if(currentIndex === 0){
currentIndex = list_view.count-2 currentIndex = list_view.count-2
}else if(currentIndex === list_view.count-1){ }else if(currentIndex === list_view.count-1){
currentIndex = 1 currentIndex = 1
} }
d.flagXChanged = false if(d.isAnimEnable){
timer_run.restart() timer_run.restart()
}
} }
onMovementStarted: { onMovementStarted: {
d.flagXChanged = true d.flagXChanged = true
@ -104,12 +107,12 @@ Item {
onContentXChanged: { onContentXChanged: {
if(d.flagXChanged){ if(d.flagXChanged){
var maxX = Math.min(list_view.width*(currentIndex+1),list_view.count*list_view.width) var maxX = Math.min(list_view.width*(currentIndex+1),list_view.count*list_view.width)
var minY = Math.max(0,(list_view.width*(currentIndex-1))) var minX = Math.max(0,(list_view.width*(currentIndex-1)))
if(contentX>=maxX){ if(contentX>=maxX){
contentX = maxX contentX = maxX
} }
if(contentX<=minY){ if(contentX<=minX){
contentX = minY contentX = minX
} }
} }
} }