return instance.InternalDisappearingTransition;
});
- internal BaseComponents.View LastFocusedView = null;
+ /// <summary>
+ /// EnableBackNavigationProperty
+ /// </summary>
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ public static readonly BindableProperty EnableBackNavigationProperty = BindableProperty.Create(nameof(EnableBackNavigation), typeof(bool), typeof(Page), default(bool), propertyChanged: (bindable, oldValue, newValue) =>
+ {
+ var instance = (Page)bindable;
+ if (newValue != null)
+ {
+ instance.InternalEnableBackNavigation = (bool)newValue;
+ }
+ },
+ defaultValueCreator: (bindable) =>
+ {
+ var instance = (Page)bindable;
+ return instance.InternalEnableBackNavigation;
+ });
+
+ /// <inheritdoc/>
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ protected internal BaseComponents.View LastFocusedView = null;
private Navigator navigator = null;
private TransitionBase disappearingTransition = null;
+ private bool enableBackNavigation = true;
+
/// <summary>
/// Creates a new instance of a Page.
/// </summary>
}
/// <summary>
+ /// Creates a new instance of a Page with style.
+ /// </summary>
+ /// <param name="style">A style applied to the newly created Page.</param>
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ public Page(ControlStyle style) : base(style)
+ {
+ }
+
+ /// <summary>
/// Navigator which has pushed the Page into its stack.
/// If this Page has not been pushed into any Navigator, then Navigator is null.
/// </summary>
/// <since_tizen> 9 </since_tizen>
public event EventHandler<PageDisappearedEventArgs> Disappeared;
+ /// <summary>
+ /// Gets or sets if this page is popped when back button or back key is pressed and released.
+ /// </summary>
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ public bool EnableBackNavigation
+ {
+ get
+ {
+ return (bool)GetValue(EnableBackNavigationProperty);
+ }
+ set
+ {
+ SetValue(EnableBackNavigationProperty, value);
+ NotifyPropertyChanged();
+ }
+ }
+
+ private bool InternalEnableBackNavigation
+ {
+ set
+ {
+ enableBackNavigation = value;
+ }
+ get
+ {
+ return enableBackNavigation;
+ }
+ }
+
internal void InvokeAppearing()
{
Appearing?.Invoke(this, new PageAppearingEventArgs());
{
Disappeared?.Invoke(this, new PageDisappearedEventArgs());
}
+
+ /// <summary>
+ /// works only when DefaultAlgorithm is enabled.
+ /// to save the currently focused View when disappeared.
+ /// </summary>
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ protected internal virtual void SaveKeyFocus()
+ {
+ if (FocusManager.Instance.IsDefaultAlgorithmEnabled())
+ {
+ if (this is DialogPage)
+ {
+ FocusManager.Instance.ResetFocusFinderRootView();
+ }
+
+ var currentFocusedView = FocusManager.Instance.GetCurrentFocusView();
+ if (currentFocusedView)
+ {
+ var findChild = FindDescendantByID(currentFocusedView.ID);
+ if (findChild)
+ {
+ LastFocusedView = findChild;
+ return;
+ }
+ }
+ LastFocusedView = null;
+ }
+ }
+
+ /// <summary>
+ /// works only when DefaultAlgorithm is enabled.
+ /// to set key focused View when showing.
+ /// </summary>
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ protected internal virtual void RestoreKeyFocus()
+ {
+ if (FocusManager.Instance.IsDefaultAlgorithmEnabled())
+ {
+ if (LastFocusedView)
+ {
+ FocusManager.Instance.SetCurrentFocusView(LastFocusedView);
+ }
+ else
+ {
+ var temp = new Tizen.NUI.BaseComponents.View()
+ {
+ Size = new Size(0.1f, 0.1f, 0.0f),
+ Position = new Position(0, 0, 0),
+ Focusable = true,
+ };
+ this.Add(temp);
+ temp.LowerToBottom();
+ FocusManager.Instance.SetCurrentFocusView(temp);
+ var focused = FocusManager.Instance.GetNearestFocusableActor(this, temp, Tizen.NUI.BaseComponents.View.FocusDirection.Down);
+ if (focused)
+ {
+ FocusManager.Instance.SetCurrentFocusView(focused);
+ }
+ else
+ {
+ FocusManager.Instance.ClearFocus();
+ }
+ temp.Unparent();
+ temp.Dispose();
+ }
+
+ if (this is DialogPage)
+ {
+ FocusManager.Instance.SetFocusFinderRootView(this);
+ }
+ }
+ }
+
}
}