@@ -515,10 +515,7 @@ public async Task IterateToIndex(int index)
515
515
{
516
516
if ( preloadValue . IsLoading )
517
517
{
518
- if ( index == CurrentIndex )
519
- {
520
- LoadingPreview ( index ) ;
521
- }
518
+ TryShowPreview ( preloadValue ) ;
522
519
}
523
520
524
521
while ( preloadValue . IsLoading )
@@ -536,11 +533,7 @@ public async Task IterateToIndex(int index)
536
533
}
537
534
else
538
535
{
539
- if ( index == CurrentIndex )
540
- {
541
- LoadingPreview ( index ) ;
542
- }
543
-
536
+ TryShowPreview ( preloadValue ) ;
544
537
preloadValue = await PreLoader . GetAsync ( CurrentIndex , ImagePaths ) ;
545
538
}
546
539
@@ -556,6 +549,14 @@ public async Task IterateToIndex(int index)
556
549
if ( SettingsHelper . Settings . ImageScaling . ShowImageSideBySide )
557
550
{
558
551
var nextPreloadValue = await GetNextPreLoadValueAsync ( ) ;
552
+ lock ( _lock )
553
+ {
554
+ if ( CurrentIndex != index )
555
+ {
556
+ // Skip loading if user went to next value
557
+ return ;
558
+ }
559
+ }
559
560
_vm . SecondaryImageSource = nextPreloadValue . ImageModel . Image ;
560
561
await UpdateSource ( index , preloadValue , nextPreloadValue ) ;
561
562
}
@@ -594,6 +595,32 @@ public async Task IterateToIndex(int index)
594
595
{
595
596
_vm . IsLoading = false ;
596
597
}
598
+
599
+ return ;
600
+
601
+ void TryShowPreview ( PreLoader . PreLoadValue preloadValue )
602
+ {
603
+ if ( preloadValue is null )
604
+ return ;
605
+
606
+ if ( ! preloadValue . IsLoading )
607
+ return ;
608
+
609
+ if ( index != CurrentIndex )
610
+ return ;
611
+
612
+ if ( SettingsHelper . Settings . ImageScaling . ShowImageSideBySide )
613
+ {
614
+ SetTitleHelper . SetLoadingTitle ( _vm ) ;
615
+ _vm . IsLoading = true ;
616
+ _vm . ImageSource = null ;
617
+ _vm . SecondaryImageSource = null ;
618
+ }
619
+ else
620
+ {
621
+ LoadingPreview ( index ) ;
622
+ }
623
+ }
597
624
}
598
625
599
626
private static Timer ? _timer ;
@@ -642,8 +669,22 @@ private async Task UpdateSource(int index, PreLoader.PreLoadValue? preLoadValue,
642
669
preLoadValue . ImageModel = await ImageHelper . GetImageModelAsync ( fileInfo ) . ConfigureAwait ( false ) ;
643
670
}
644
671
672
+ if ( SettingsHelper . Settings . ImageScaling . ShowImageSideBySide )
673
+ {
674
+ nextPreloadValue ??= await GetNextPreLoadValueAsync ( ) ;
675
+ if ( nextPreloadValue . ImageModel ? . Image is null )
676
+ {
677
+ var fileInfo = nextPreloadValue . ImageModel ? . FileInfo ?? new FileInfo ( ImagePaths [ GetIteration ( index , IsReversed ? NavigateTo . Previous : NavigateTo . Next , true ) ] ) ;
678
+ nextPreloadValue . ImageModel = await ImageHelper . GetImageModelAsync ( fileInfo ) . ConfigureAwait ( false ) ;
679
+ }
680
+ }
681
+
645
682
_vm . IsLoading = false ;
646
683
ExifHandling . SetImageModel ( preLoadValue . ImageModel , _vm ) ;
684
+ if ( SettingsHelper . Settings . ImageScaling . ShowImageSideBySide )
685
+ {
686
+ _vm . SecondaryImageSource = nextPreloadValue . ImageModel . Image ;
687
+ }
647
688
_vm . ImageSource = preLoadValue . ImageModel . Image ;
648
689
if ( preLoadValue . ImageModel . ImageType is ImageType . AnimatedGif or ImageType . AnimatedWebp )
649
690
{
0 commit comments