mirror of
https://github.com/gui-cs/Terminal.Gui.git
synced 2025-12-26 15:57:56 +01:00
Fixed focus issue - 2
This commit is contained in:
@@ -160,6 +160,10 @@ public partial class View // SuperView/SubView hierarchy management (SuperView,
|
||||
Rectangle touched = view.Frame;
|
||||
|
||||
bool hadFocus = view.HasFocus;
|
||||
bool couldFocus = view.CanFocus;
|
||||
|
||||
view.CanFocus = false; // If view had focus, this will ensure it doesn't and it stays that way
|
||||
Debug.Assert (!view.HasFocus);
|
||||
|
||||
_subviews.Remove (view);
|
||||
view._superView = null;
|
||||
@@ -175,20 +179,13 @@ public partial class View // SuperView/SubView hierarchy management (SuperView,
|
||||
}
|
||||
}
|
||||
|
||||
view.CanFocus = couldFocus; // Restore to previous value
|
||||
|
||||
if (_previouslyFocused == view)
|
||||
{
|
||||
_previouslyFocused = null;
|
||||
}
|
||||
|
||||
if (hadFocus)
|
||||
{
|
||||
// Access _hasFocus directly; don't use HasFocus because it will try to find the focused view
|
||||
view._hasFocus = false;
|
||||
AdvanceFocus (NavigationDirection.Forward, null);
|
||||
}
|
||||
|
||||
Debug.Assert (!view.HasFocus);
|
||||
|
||||
OnRemoved (new (this, view));
|
||||
|
||||
return view;
|
||||
|
||||
@@ -477,9 +477,6 @@ public partial class View // Focus and cross-view navigation management (TabStop
|
||||
if (!AdvanceFocus (NavigationDirection.Forward, null))
|
||||
{
|
||||
// Couldn't advance, so we're the most focused view in the application
|
||||
_previouslyFocused = null;
|
||||
|
||||
Application.Navigation?.SetFocused (this);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -497,6 +494,9 @@ public partial class View // Focus and cross-view navigation management (TabStop
|
||||
}
|
||||
}
|
||||
|
||||
_previouslyFocused = null;
|
||||
Application.Navigation?.SetFocused (this);
|
||||
|
||||
if (Arrangement.HasFlag (ViewArrangement.Overlapped))
|
||||
{
|
||||
SuperView?.MoveSubviewToEnd (this);
|
||||
|
||||
Reference in New Issue
Block a user