@@ -62,46 +62,44 @@ public async Task ActivateAsync()
62
62
63
63
public async Task < string > GetTextAsync ( )
64
64
{
65
- return await ExecuteOnActiveViewAsync ( view => Task . FromResult ( view . TextSnapshot . GetText ( ) ) ) ;
65
+ await JoinableTaskFactory . SwitchToMainThreadAsync ( ) ;
66
+
67
+ var view = await GetActiveTextViewAsync ( ) ;
68
+ return view . TextSnapshot . GetText ( ) ;
66
69
}
67
70
68
71
public async Task SetTextAsync ( string text )
69
72
{
70
- await ExecuteOnActiveViewAsync (
71
- view =>
72
- {
73
- var textSnapshot = view . TextSnapshot ;
74
- var replacementSpan = new SnapshotSpan ( textSnapshot , 0 , textSnapshot . Length ) ;
75
- view . TextBuffer . Replace ( replacementSpan , text ) ;
76
- return Task . CompletedTask ;
77
- } ) ;
73
+ await JoinableTaskFactory . SwitchToMainThreadAsync ( ) ;
74
+
75
+ var view = await GetActiveTextViewAsync ( ) ;
76
+ var textSnapshot = view . TextSnapshot ;
77
+ var replacementSpan = new SnapshotSpan ( textSnapshot , 0 , textSnapshot . Length ) ;
78
+ view . TextBuffer . Replace ( replacementSpan , text ) ;
78
79
}
79
80
80
81
public async Task MoveCaretAsync ( int position )
81
82
{
82
- await ExecuteOnActiveViewAsync (
83
- view =>
84
- {
85
- var subjectBuffer = view . GetBufferContainingCaret ( ) ;
86
- var point = new SnapshotPoint ( subjectBuffer . CurrentSnapshot , position ) ;
83
+ await JoinableTaskFactory . SwitchToMainThreadAsync ( ) ;
87
84
88
- view . Caret . MoveTo ( point ) ;
85
+ var view = await GetActiveTextViewAsync ( ) ;
86
+ var subjectBuffer = view . GetBufferContainingCaret ( ) ;
87
+ var point = new SnapshotPoint ( subjectBuffer . CurrentSnapshot , position ) ;
89
88
90
- return Task . CompletedTask ;
91
- } ) ;
89
+ view . Caret . MoveTo ( point ) ;
92
90
}
93
91
94
92
public async Task < bool > IsCaretOnScreenAsync ( )
95
93
{
96
- return await ExecuteOnActiveViewAsync (
97
- view =>
98
- {
99
- var caret = view . Caret ;
100
- return Task . FromResult ( caret . Left >= view . ViewportLeft
101
- && caret . Right < = view . ViewportRight
102
- && caret . Top > = view . ViewportTop
103
- && caret . Bottom < = view . ViewportBottom ) ;
104
- } ) ;
94
+ await JoinableTaskFactory . SwitchToMainThreadAsync ( ) ;
95
+
96
+ var view = await GetActiveTextViewAsync ( ) ;
97
+ var caret = view . Caret ;
98
+
99
+ return caret . Left > = view . ViewportLeft
100
+ && caret . Right < = view . ViewportRight
101
+ && caret . Top > = view . ViewportTop
102
+ && caret . Bottom <= view . ViewportBottom ;
105
103
}
106
104
107
105
protected override Task < ITextBuffer > GetBufferContainingCaretAsync ( IWpfTextView view )
@@ -111,30 +109,43 @@ protected override Task<ITextBuffer> GetBufferContainingCaretAsync(IWpfTextView
111
109
112
110
public async Task < int > GetFirstVisibleLineAsync ( )
113
111
{
114
- return await ExecuteOnActiveViewAsync ( view => Task . FromResult ( view . TextViewLines . FirstVisibleLine . Start . GetContainingLine ( ) . LineNumber ) ) ;
112
+ await JoinableTaskFactory . SwitchToMainThreadAsync ( ) ;
113
+
114
+ var view = await GetActiveTextViewAsync ( ) ;
115
+ return view . TextViewLines . FirstVisibleLine . Start . GetContainingLine ( ) . LineNumber ;
115
116
}
116
117
117
118
public async Task < int > GetLastVisibleLineAsync ( )
118
119
{
119
- return await ExecuteOnActiveViewAsync ( view => Task . FromResult ( view . TextViewLines . LastVisibleLine . Start . GetContainingLine ( ) . LineNumber ) ) ;
120
+ await JoinableTaskFactory . SwitchToMainThreadAsync ( ) ;
121
+
122
+ var view = await GetActiveTextViewAsync ( ) ;
123
+ return view . TextViewLines . LastVisibleLine . Start . GetContainingLine ( ) . LineNumber ;
120
124
}
121
125
122
126
public async Task < VisibilityState > GetLastVisibleLineStateAsync ( )
123
127
{
124
- return await ExecuteOnActiveViewAsync ( view => Task . FromResult ( view . TextViewLines . LastVisibleLine . VisibilityState ) ) ;
128
+ await JoinableTaskFactory . SwitchToMainThreadAsync ( ) ;
129
+
130
+ var view = await GetActiveTextViewAsync ( ) ;
131
+ return view . TextViewLines . LastVisibleLine . VisibilityState ;
125
132
}
126
133
127
134
public async Task < Point > GetCenterOfEditorOnScreenAsync ( )
128
135
{
129
- return await ExecuteOnActiveViewAsync (
130
- view =>
131
- {
132
- var center = new Point ( view . VisualElement . ActualWidth / 2 , view . VisualElement . ActualHeight / 2 ) ;
133
- return Task . FromResult ( view . VisualElement . PointToScreen ( center ) ) ;
134
- } ) ;
136
+ await JoinableTaskFactory . SwitchToMainThreadAsync ( ) ;
137
+
138
+ var view = await GetActiveTextViewAsync ( ) ;
139
+ var center = new Point ( view . VisualElement . ActualWidth / 2 , view . VisualElement . ActualHeight / 2 ) ;
140
+ return view . VisualElement . PointToScreen ( center ) ;
135
141
}
136
142
137
143
public async Task < double > GetZoomLevelAsync ( )
138
- => await ExecuteOnActiveViewAsync ( view => Task . FromResult ( view . ZoomLevel ) ) ;
144
+ {
145
+ await JoinableTaskFactory . SwitchToMainThreadAsync ( ) ;
146
+
147
+ var view = await GetActiveTextViewAsync ( ) ;
148
+ return view . ZoomLevel ;
149
+ }
139
150
}
140
151
}
0 commit comments