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,