Skip to content

Commit 6c62ae2

Browse files
committed
Stop SelectionChange events from blocking on the main UI thread.
1 parent ceefdb1 commit 6c62ae2

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

RetailCoder.VBE/UI/SelectionChangeService.cs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.Linq;
3+
using System.Threading.Tasks;
34
using Rubberduck.Parsing;
45
using Rubberduck.Parsing.Symbols;
56
using Rubberduck.VBEditor.Events;
@@ -39,8 +40,11 @@ private void OnVbeSelectionChanged(object sender, SelectionChangedEventArgs e)
3940
return;
4041
}
4142

42-
var eventArgs = new DeclarationChangedEventArgs(e.CodePane, _parser.State.FindSelectedDeclaration(e.CodePane));
43-
DispatchSelectedDeclaration(eventArgs);
43+
new Task(() =>
44+
{
45+
var eventArgs = new DeclarationChangedEventArgs(e.CodePane, _parser.State.FindSelectedDeclaration(e.CodePane));
46+
DispatchSelectedDeclaration(eventArgs);
47+
}).Start();
4448
}
4549

4650
private void OnVbeFocusChanged(object sender, WindowChangedEventArgs e)
@@ -55,21 +59,21 @@ private void OnVbeFocusChanged(object sender, WindowChangedEventArgs e)
5559
{
5660
return;
5761
}
58-
DispatchSelectedDesignerDeclaration(_vbe.SelectedVBComponent);
62+
new Task(() => DispatchSelectedDesignerDeclaration(_vbe.SelectedVBComponent)).Start();
5963
break;
6064
case WindowKind.CodeWindow:
6165
//Caret changed in a code pane.
6266
if (e.CodePane != null && !e.CodePane.IsWrappingNullReference)
6367
{
64-
DispatchSelectedDeclaration(new DeclarationChangedEventArgs(e.CodePane, _parser.State.FindSelectedDeclaration(e.CodePane)));
68+
new Task(() => DispatchSelectedDeclaration(new DeclarationChangedEventArgs(e.CodePane, _parser.State.FindSelectedDeclaration(e.CodePane)))).Start();
6569
}
6670
break;
6771
}
6872
}
6973
else if (e.EventType == FocusType.ChildFocus)
7074
{
7175
//Treeview selection changed in project window.
72-
DispatchSelectedProjectNodeDeclaration(_vbe.SelectedVBComponent);
76+
new Task(() => DispatchSelectedProjectNodeDeclaration(_vbe.SelectedVBComponent)).Start();
7377
}
7478
}
7579

0 commit comments

Comments
 (0)