@@ -238,7 +238,7 @@ protected override void Dispose (bool disposing)
238238
239239 internal async void OpenFile ( )
240240 {
241- if ( SelectedItem == null || SelectedItem . Item < 0 || SelectedItem . Item >= SelectedItem . DataSource . Count )
241+ if ( SelectedItem == null || ! SelectedItem . IsValid )
242242 return ;
243243
244244 var item = SelectedItem . DataSource [ SelectedItem . Item ] ;
@@ -636,7 +636,7 @@ protected override Size OnGetPreferredSize (SizeConstraint widthConstraint, Size
636636 ItemIdentifier GetItemAt ( double px , double py )
637637 {
638638 double y = ParentBounds . Y + yMargin ;
639- if ( topItem != null ) {
639+ if ( topItem != null && topItem . IsValid ) {
640640 layout . Markup = GetRowMarkup ( topItem . DataSource [ topItem . Item ] ) ;
641641 var ls = layout . GetSize ( ) ;
642642 y += ls . Height + itemSeparatorHeight + itemPadding * 2 ;
@@ -1032,15 +1032,15 @@ protected virtual void OnItemActivated (EventArgs e)
10321032
10331033 public ISegment SelectedItemRegion {
10341034 get {
1035- if ( SelectedItem == null || SelectedItem . Item < 0 || SelectedItem . Item >= SelectedItem . DataSource . Count )
1035+ if ( SelectedItem == null || ! SelectedItem . IsValid )
10361036 return TextSegment . Invalid ;
10371037 return SelectedItem . DataSource [ SelectedItem . Item ] . Segment ;
10381038 }
10391039 }
10401040
10411041 public string SelectedItemFileName {
10421042 get {
1043- if ( SelectedItem == null || SelectedItem . Item < 0 || SelectedItem . Item >= SelectedItem . DataSource . Count )
1043+ if ( SelectedItem == null || ! SelectedItem . IsValid )
10441044 return null ;
10451045 return SelectedItem . DataSource [ SelectedItem . Item ] . File ;
10461046 }
@@ -1050,6 +1050,7 @@ internal class ItemIdentifier {
10501050 public SearchCategory Category { get ; private set ; }
10511051 public IReadOnlyList < SearchResult > DataSource { get ; private set ; }
10521052 public int Item { get ; private set ; }
1053+ public bool IsValid { get => DataSource != null && 0 <= Item && Item < DataSource . Count ; }
10531054
10541055 public ItemIdentifier ( SearchCategory category , IReadOnlyList < SearchResult > dataSource , int item )
10551056 {
@@ -1158,7 +1159,7 @@ protected override void OnDraw (Context context, Rectangle dirtyRect)
11581159
11591160 double y = alloc . Y + yMargin ;
11601161 Size ls ;
1161- if ( topItem != null ) {
1162+ if ( topItem != null && topItem . IsValid ) {
11621163 headerLayout . Text = GettextCatalog . GetString ( "Top Result" ) ;
11631164 ls = headerLayout . GetSize ( ) ;
11641165 context . SetColor ( headerColor ) ;
0 commit comments