mirror of
https://github.com/gui-cs/Terminal.Gui.git
synced 2025-12-26 15:57:56 +01:00
* Fixes #3682. CanFocus true for Label works only for keyboard and not mouse. * Simplifying code. --------- Co-authored-by: Tig <tig@users.noreply.github.com>
This commit is contained in:
@@ -28,7 +28,10 @@ public class Label : View
|
||||
|
||||
private void Label_MouseClick (object sender, MouseEventEventArgs e)
|
||||
{
|
||||
e.Handled = InvokeCommand (Command.HotKey) == true;
|
||||
if (!CanFocus)
|
||||
{
|
||||
e.Handled = InvokeCommand (Command.HotKey) == true;
|
||||
}
|
||||
}
|
||||
|
||||
private void Label_TitleChanged (object sender, EventArgs<string> e)
|
||||
|
||||
@@ -1315,4 +1315,49 @@ e
|
||||
Assert.Equal (expectedLabelBounds, label.Viewport);
|
||||
super.Dispose ();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
[AutoInitShutdown]
|
||||
public void Label_CanFocus_True_Get_Focus_By_Keyboard_And_Mouse ()
|
||||
{
|
||||
Label label = new () { Text = "label" };
|
||||
View view = new () { Y = 2, Width = 10, Height = 1, Text = "view", CanFocus = true };
|
||||
Toplevel top = new ();
|
||||
top.Add (label, view);
|
||||
Application.Begin (top);
|
||||
|
||||
Assert.Equal (new (0, 0, 5, 1), label.Frame);
|
||||
Assert.Equal (new (0, 2, 10, 1), view.Frame);
|
||||
Assert.Equal (view, top.MostFocused);
|
||||
Assert.False (label.CanFocus);
|
||||
Assert.False (label.HasFocus);
|
||||
Assert.True (view.CanFocus);
|
||||
Assert.True (view.HasFocus);
|
||||
|
||||
Assert.True (Application.OnKeyDown (Key.Tab));
|
||||
Assert.False (label.HasFocus);
|
||||
Assert.True (view.HasFocus);
|
||||
|
||||
Application.OnMouseEvent (new () { Position = new (0, 0), Flags = MouseFlags.Button1Clicked });
|
||||
Assert.False (label.HasFocus);
|
||||
Assert.True (view.HasFocus);
|
||||
|
||||
// Set label CanFocus to true
|
||||
label.CanFocus = true;
|
||||
Assert.True (Application.OnKeyDown (Key.Tab));
|
||||
Assert.True (label.HasFocus);
|
||||
Assert.False (view.HasFocus);
|
||||
|
||||
Assert.True (Application.OnKeyDown (Key.Tab));
|
||||
Assert.False (label.HasFocus);
|
||||
Assert.True (view.HasFocus);
|
||||
|
||||
Application.OnMouseEvent (new () { Position = new (0, 0), Flags = MouseFlags.Button1Clicked });
|
||||
Assert.True (label.HasFocus);
|
||||
Assert.False (view.HasFocus);
|
||||
|
||||
Application.OnMouseEvent (new () { Position = new (0, 2), Flags = MouseFlags.Button1Clicked });
|
||||
Assert.False (label.HasFocus);
|
||||
Assert.True (view.HasFocus);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user