Skip to content

Commit 8719db6

Browse files
authored
Merge pull request #277 from AvaloniaUI/fix-276
Fix triple click causes NRE
2 parents cf278a3 + f939891 commit 8719db6

File tree

1 file changed

+6
-8
lines changed

1 file changed

+6
-8
lines changed

src/AvaloniaEdit/Editing/SelectionMouseHandler.cs

+6-8
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,10 @@
1818

1919
using Avalonia;
2020
using Avalonia.Input;
21+
2122
using AvaloniaEdit.Document;
2223
using AvaloniaEdit.Utils;
24+
2325
using System;
2426
using System.ComponentModel;
2527
using System.Linq;
@@ -463,10 +465,6 @@ private void TextArea_MouseLeftButtonDown(object sender, PointerPressedEventArgs
463465
else
464466
{
465467
SimpleSegment startWord;
466-
467-
_mode = SelectionMode.WholeWord;
468-
startWord = GetWordAtMousePosition(e);
469-
470468
if (e.ClickCount == 3)
471469
{
472470
_mode = SelectionMode.WholeLine;
@@ -531,7 +529,7 @@ private SimpleSegment GetWordAtMousePosition(PointerEventArgs e)
531529
pos = pos.WithY(textView.Bounds.Height);
532530
pos += textView.ScrollOffset;
533531
var line = textView.GetVisualLineFromVisualTop(pos.Y);
534-
if (line != null)
532+
if (line != null && line.TextLines != null)
535533
{
536534
var visualColumn = line.GetVisualColumn(pos, TextArea.Selection.EnableVirtualSpace);
537535
var wordStartVc = line.GetNextCaretPosition(visualColumn + 1, LogicalDirection.Backward, CaretPositioningMode.WordStartOrSymbol, TextArea.Selection.EnableVirtualSpace);
@@ -562,7 +560,7 @@ private SimpleSegment GetLineAtMousePosition(PointerEventArgs e)
562560
pos = pos.WithY(textView.Bounds.Height);
563561
pos += textView.ScrollOffset;
564562
var line = textView.GetVisualLineFromVisualTop(pos.Y);
565-
return line != null
563+
return line != null && line.TextLines != null
566564
? new SimpleSegment(line.StartOffset, line.LastDocumentLine.EndOffset - line.StartOffset)
567565
: SimpleSegment.Invalid;
568566
}
@@ -585,7 +583,7 @@ private int GetOffsetFromMousePosition(Point positionRelativeToTextView, out int
585583
if (pos.Y >= textView.DocumentHeight)
586584
pos = pos.WithY(textView.DocumentHeight - ExtensionMethods.Epsilon);
587585
var line = textView.GetVisualLineFromVisualTop(pos.Y);
588-
if (line != null)
586+
if (line != null && line.TextLines != null)
589587
{
590588
visualColumn = line.GetVisualColumn(pos, TextArea.Selection.EnableVirtualSpace, out isAtEndOfLine);
591589
return line.GetRelativeOffset(visualColumn) + line.FirstDocumentLine.Offset;
@@ -607,7 +605,7 @@ private int GetOffsetFromMousePositionFirstTextLineOnly(Point positionRelativeTo
607605
if (pos.Y >= textView.DocumentHeight)
608606
pos = pos.WithY(textView.DocumentHeight - ExtensionMethods.Epsilon);
609607
var line = textView.GetVisualLineFromVisualTop(pos.Y);
610-
if (line != null)
608+
if (line != null && line.TextLines != null)
611609
{
612610
visualColumn = line.GetVisualColumn(line.TextLines.First(), pos.X, TextArea.Selection.EnableVirtualSpace);
613611
return line.GetRelativeOffset(visualColumn) + line.FirstDocumentLine.Offset;

0 commit comments

Comments
 (0)