Discovered serious issues with how HasFocus, OnEnter/OnLeave, etc... work in some edge cases.

This will require re-visiting the design at a deep level and fixing some long-standing but ignored issues such as how OnEnter/OnLeave don't follow proper cancelation design. Also, there's a need for keeping track of the old focus state of a tree of subviews when that tree loses focus; FocusDireciton is a hack that causes tons of confusion.
This commit is contained in:
Tig
2024-08-01 06:08:48 -06:00
parent 469b3572d5
commit 4226d8172e
20 changed files with 277 additions and 136 deletions

View File

@@ -78,7 +78,7 @@ public class TextFieldTests (ITestOutputHelper output)
public void Cancel_TextChanging_ThenBackspace ()
{
var tf = new TextField ();
tf.RestoreFocus ();
tf.RestoreFocus (null);
tf.NewKeyDownEvent (Key.A.WithShift);
Assert.Equal ("A", tf.Text);
@@ -929,7 +929,7 @@ public class TextFieldTests (ITestOutputHelper output)
public void Backspace_From_End ()
{
var tf = new TextField { Text = "ABC" };
tf.RestoreFocus ();
tf.RestoreFocus (null);
Assert.Equal ("ABC", tf.Text);
tf.BeginInit ();
tf.EndInit ();
@@ -956,7 +956,7 @@ public class TextFieldTests (ITestOutputHelper output)
public void Backspace_From_Middle ()
{
var tf = new TextField { Text = "ABC" };
tf.RestoreFocus ();
tf.RestoreFocus (null);
tf.CursorPosition = 2;
Assert.Equal ("ABC", tf.Text);