@@ -36,8 +36,8 @@ public bool IsEnabled
3636 /// Current selected item in the file list.
3737 /// TODO see about removing this and accessing it from the page context instead
3838 /// </summary>
39- private ListedItem selectedItem ;
40- public ListedItem SelectedItem
39+ private ListedItem ? selectedItem ;
40+ public ListedItem ? SelectedItem
4141 {
4242 get => selectedItem ;
4343 set
@@ -117,17 +117,24 @@ public InfoPaneViewModel()
117117 IsEnabled = infoPaneSettingsService . IsEnabled ;
118118 }
119119
120- private void ContentPageContext_PropertyChanged ( object ? sender , PropertyChangedEventArgs e )
120+ private async void ContentPageContext_PropertyChanged ( object ? sender , PropertyChangedEventArgs e )
121121 {
122122 switch ( e . PropertyName )
123123 {
124124 case nameof ( IContentPageContext . Folder ) :
125125 case nameof ( IContentPageContext . SelectedItem ) :
126126
127+ ListedItem ? tempSelectedItem = null ;
127128 if ( contentPageContext . SelectedItems . Count == 1 )
128- SelectedItem = contentPageContext . SelectedItems . First ( ) ;
129- else
130- SelectedItem = null ;
129+ tempSelectedItem = contentPageContext . SelectedItems . First ( ) ;
130+
131+ // Don't update preview pane when the selected item changes too frequently
132+ const int delayBeforeUpdatingPreviewPane = 100 ;
133+ await Task . Delay ( delayBeforeUpdatingPreviewPane ) ;
134+ if ( tempSelectedItem is not null && ! tempSelectedItem . Equals ( contentPageContext . SelectedItem ) )
135+ return ;
136+
137+ SelectedItem = tempSelectedItem ;
131138
132139 if ( ! App . AppModel . IsMainWindowClosed )
133140 {
0 commit comments