diff --git a/Terminal.Gui/Core.cs b/Terminal.Gui/Core.cs index 9a9c65fb4..ace30b8f1 100644 --- a/Terminal.Gui/Core.cs +++ b/Terminal.Gui/Core.cs @@ -728,8 +728,15 @@ namespace Terminal.Gui { if (base.HasFocus != value) SetNeedsDisplay (); base.HasFocus = value; + + // Remove focus down the chain of subviews if focus is removed + if (value == false && focused != null) { + focused.HasFocus = false; + focused = null; + } } } + /// /// Returns the currently focused view inside this view, or null if nothing is focused. /// @@ -847,9 +854,13 @@ namespace Terminal.Gui { if (focused != null) focused.HasFocus = false; + focused = view; focused.HasFocus = true; focused.EnsureFocus (); + + // Send focus upwards + SuperView?.SetFocus(this); } /// Contains the details about the key that produced the event. @@ -1752,7 +1763,7 @@ namespace Terminal.Gui { if (view != null) { if (!view.WantMousePositionReports && me.Flags == MouseFlags.ReportMousePosition) return; - + var nme = new MouseEvent () { X = rx, Y = ry,