@@ -76,6 +76,7 @@ void ITextAreaInputHandler.Attach()
76
76
textArea . MouseMove += textArea_MouseMove ;
77
77
textArea . MouseLeftButtonUp += textArea_MouseLeftButtonUp ;
78
78
textArea . QueryCursor += textArea_QueryCursor ;
79
+ textArea . DocumentChanged += textArea_DocumentChanged ;
79
80
textArea . OptionChanged += textArea_OptionChanged ;
80
81
81
82
enableTextDragDrop = textArea . Options . EnableTextDragDrop ;
@@ -91,6 +92,7 @@ void ITextAreaInputHandler.Detach()
91
92
textArea . MouseMove -= textArea_MouseMove ;
92
93
textArea . MouseLeftButtonUp -= textArea_MouseLeftButtonUp ;
93
94
textArea . QueryCursor -= textArea_QueryCursor ;
95
+ textArea . DocumentChanged -= textArea_DocumentChanged ;
94
96
textArea . OptionChanged -= textArea_OptionChanged ;
95
97
if ( enableTextDragDrop ) {
96
98
DetachDragDrop ( ) ;
@@ -132,6 +134,15 @@ void textArea_OptionChanged(object sender, PropertyChangedEventArgs e)
132
134
DetachDragDrop ( ) ;
133
135
}
134
136
}
137
+
138
+ void textArea_DocumentChanged ( object sender , EventArgs e )
139
+ {
140
+ if ( mode != MouseSelectionMode . None ) {
141
+ mode = MouseSelectionMode . None ;
142
+ textArea . ReleaseMouseCapture ( ) ;
143
+ }
144
+ startWord = null ;
145
+ }
135
146
#endregion
136
147
137
148
#region Dropping text
@@ -379,6 +390,10 @@ void textArea_QueryCursor(object sender, QueryCursorEventArgs e)
379
390
void textArea_MouseLeftButtonDown ( object sender , MouseButtonEventArgs e )
380
391
{
381
392
mode = MouseSelectionMode . None ;
393
+ if ( textArea . Document == null ) {
394
+ // Avoid entering any selection mode when there's no document attached.
395
+ return ;
396
+ }
382
397
if ( ! e . Handled && e . ChangedButton == MouseButton . Left ) {
383
398
ModifierKeys modifiers = Keyboard . Modifiers ;
384
399
bool shift = ( modifiers & ModifierKeys . Shift ) == ModifierKeys . Shift ;
0 commit comments