Fixed focus issue - 2

This commit is contained in:
Tig
2024-09-16 16:43:02 -06:00
parent a94b085e0b
commit 357bc32ac3
2 changed files with 9 additions and 12 deletions

View File

@@ -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;

View File

@@ -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);