@@ -76,6 +76,7 @@ void ITextAreaInputHandler.Attach()
7676 textArea . MouseMove += textArea_MouseMove ;
7777 textArea . MouseLeftButtonUp += textArea_MouseLeftButtonUp ;
7878 textArea . QueryCursor += textArea_QueryCursor ;
79+ textArea . DocumentChanged += textArea_DocumentChanged ;
7980 textArea . OptionChanged += textArea_OptionChanged ;
8081
8182 enableTextDragDrop = textArea . Options . EnableTextDragDrop ;
@@ -91,6 +92,7 @@ void ITextAreaInputHandler.Detach()
9192 textArea . MouseMove -= textArea_MouseMove ;
9293 textArea . MouseLeftButtonUp -= textArea_MouseLeftButtonUp ;
9394 textArea . QueryCursor -= textArea_QueryCursor ;
95+ textArea . DocumentChanged -= textArea_DocumentChanged ;
9496 textArea . OptionChanged -= textArea_OptionChanged ;
9597 if ( enableTextDragDrop ) {
9698 DetachDragDrop ( ) ;
@@ -132,6 +134,15 @@ void textArea_OptionChanged(object sender, PropertyChangedEventArgs e)
132134 DetachDragDrop ( ) ;
133135 }
134136 }
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+ }
135146 #endregion
136147
137148 #region Dropping text
@@ -379,6 +390,10 @@ void textArea_QueryCursor(object sender, QueryCursorEventArgs e)
379390 void textArea_MouseLeftButtonDown ( object sender , MouseButtonEventArgs e )
380391 {
381392 mode = MouseSelectionMode . None ;
393+ if ( textArea . Document == null ) {
394+ // Avoid entering any selection mode when there's no document attached.
395+ return ;
396+ }
382397 if ( ! e . Handled && e . ChangedButton == MouseButton . Left ) {
383398 ModifierKeys modifiers = Keyboard . Modifiers ;
384399 bool shift = ( modifiers & ModifierKeys . Shift ) == ModifierKeys . Shift ;
0 commit comments