Merge pull request #2278 from BDisp/clearallselection-text-fix_2277

Fixes #2277. Changing TextField.Text does not clear text selection.
This commit is contained in:
Tig
2023-01-05 10:08:21 -07:00
committed by GitHub
2 changed files with 28 additions and 0 deletions

View File

@@ -298,6 +298,7 @@ namespace Terminal.Gui {
}
return;
}
ClearAllSelection ();
text = TextModel.ToRunes (newText.NewText);
if (!Secret && !historyText.IsFromHistory) {

View File

@@ -1296,5 +1296,32 @@ namespace Terminal.Gui.Views {
Assert.Equal ($"{text}A", tf.Text);
Assert.True (tf.IsDirty);
}
[InlineData ("a")] // Lower than selection
[InlineData ("aaaaaaaaaaa")] // Greater than selection
[InlineData ("aaaa")] // Equal than selection
[Theory]
public void TestSetTextAndMoveCursorToEnd_WhenExistingSelection (string newText)
{
var tf = new TextField ();
tf.Text = "fish";
tf.CursorPosition = tf.Text.Length;
tf.ProcessKey (new KeyEvent (Key.CursorLeft, new KeyModifiers ()));
tf.ProcessKey (new KeyEvent (Key.CursorLeft | Key.ShiftMask, new KeyModifiers { Shift = true }));
tf.ProcessKey (new KeyEvent (Key.CursorLeft | Key.ShiftMask, new KeyModifiers { Shift = true }));
Assert.Equal (1, tf.CursorPosition);
Assert.Equal (2, tf.SelectedLength);
Assert.Equal ("is", tf.SelectedText);
tf.Text = newText;
tf.CursorPosition = tf.Text.Length;
Assert.Equal (newText.Length, tf.CursorPosition);
Assert.Equal (0, tf.SelectedLength);
Assert.Null (tf.SelectedText);
}
}
}