aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Editing/EmptySelection.cs
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2019-05-05 10:31:06 +0300
committerShlomo Hecht <shlomo@twine-s.com>2019-05-05 10:31:06 +0300
commit79bd7bb6a22f1da1a77fcc3f527a0955028f2447 (patch)
tree3e1c30dbbf7b6ccf70aa5631ad2f42ee356b4e25 /Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Editing/EmptySelection.cs
parent4129b6caa72f8bafeeefe1a4a88a0d5e1568e245 (diff)
parent661c55343a468a9c150e8d163711567f89a02889 (diff)
downloadTango-79bd7bb6a22f1da1a77fcc3f527a0955028f2447.tar.gz
Tango-79bd7bb6a22f1da1a77fcc3f527a0955028f2447.zip
merge tpf
Diffstat (limited to 'Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Editing/EmptySelection.cs')
-rw-r--r--Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Editing/EmptySelection.cs85
1 files changed, 85 insertions, 0 deletions
diff --git a/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Editing/EmptySelection.cs b/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Editing/EmptySelection.cs
new file mode 100644
index 000000000..6cca63ecb
--- /dev/null
+++ b/Software/Visual_Studio/Scripting/Tango.Scripting.Editors/Editing/EmptySelection.cs
@@ -0,0 +1,85 @@
+// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
+// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
+
+using System;
+using System.Collections.Generic;
+using System.Runtime.CompilerServices;
+using Tango.Scripting.Editors.Document;
+using Tango.Scripting.Editors.Utils;
+
+namespace Tango.Scripting.Editors.Editing
+{
+ sealed class EmptySelection : Selection
+ {
+ public EmptySelection(TextArea textArea) : base(textArea)
+ {
+ }
+
+ public override Selection UpdateOnDocumentChange(DocumentChangeEventArgs e)
+ {
+ return this;
+ }
+
+ public override TextViewPosition StartPosition {
+ get { return new TextViewPosition(TextLocation.Empty); }
+ }
+
+ public override TextViewPosition EndPosition {
+ get { return new TextViewPosition(TextLocation.Empty); }
+ }
+
+ public override ISegment SurroundingSegment {
+ get { return null; }
+ }
+
+ public override Selection SetEndpoint(TextViewPosition endPosition)
+ {
+ throw new NotSupportedException();
+ }
+
+ public override Selection StartSelectionOrSetEndpoint(TextViewPosition startPosition, TextViewPosition endPosition)
+ {
+ var document = textArea.Document;
+ if (document == null)
+ throw ThrowUtil.NoDocumentAssigned();
+ return Create(textArea, startPosition, endPosition);
+ }
+
+ public override IEnumerable<SelectionSegment> Segments {
+ get { return Empty<SelectionSegment>.Array; }
+ }
+
+ public override string GetText()
+ {
+ return string.Empty;
+ }
+
+ public override void ReplaceSelectionWithText(string newText)
+ {
+ if (newText == null)
+ throw new ArgumentNullException("newText");
+ newText = AddSpacesIfRequired(newText, textArea.Caret.Position, textArea.Caret.Position);
+ if (newText.Length > 0) {
+ if (textArea.ReadOnlySectionProvider.CanInsert(textArea.Caret.Offset)) {
+ textArea.Document.Insert(textArea.Caret.Offset, newText);
+ }
+ }
+ textArea.Caret.VisualColumn = -1;
+ }
+
+ public override int Length {
+ get { return 0; }
+ }
+
+ // Use reference equality because there's only one EmptySelection per text area.
+ public override int GetHashCode()
+ {
+ return RuntimeHelpers.GetHashCode(this);
+ }
+
+ public override bool Equals(object obj)
+ {
+ return this == obj;
+ }
+ }
+}