Skip to content
This repository was archived by the owner on Oct 4, 2021. It is now read-only.

Commit 056c13f

Browse files
authored
Merge pull request #9034 from mono/master-vsts999353
Fixes VSTS Bug 999353: System.ArgumentOutOfRangeException exception in
2 parents e0dbfec + 624191c commit 056c13f

File tree

2 files changed

+7
-6
lines changed

2 files changed

+7
-6
lines changed

main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbarController.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -706,7 +706,7 @@ void HandleSearchEntryChanged (object sender, EventArgs e)
706706
};
707707
popup.SelectedItemChanged += delegate {
708708
var si = popup?.Content?.SelectedItem;
709-
if (si == null || si.Item < 0 || si.Item >= si.DataSource.Count)
709+
if (si == null || !si.IsValid)
710710
return;
711711
var text = si.DataSource [si.Item].AccessibilityMessage;
712712
if (string.IsNullOrEmpty (text))

main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/SearchPopupWindow.cs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)