mirror of
https://github.com/Ellpeck/MLEM.git
synced 2024-11-22 12:58:33 +01:00
modify AutoNavGroup behavior to disallow new selections
This commit is contained in:
parent
5ba550619d
commit
03accff6ae
2 changed files with 6 additions and 3 deletions
|
@ -253,7 +253,7 @@ namespace MLEM.Ui.Elements {
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// An optional string that represents a group of elements for automatic (keyboard and gamepad) navigation.
|
/// An optional string that represents a group of elements for automatic (keyboard and gamepad) navigation.
|
||||||
/// All elements that share the same auto-nav group will be able to be navigated between, and all other elements will not be reachable from elements of other groups.
|
/// All elements that share the same auto-nav group will be able to be navigated between, and all other elements will not be reachable from elements of other groups.
|
||||||
/// Note that, if no element is previously selected and auto-navigation is invoked, this element can always be navigated to if it is the first one chosen by auto-navigation.
|
/// Note that, if no element is previously selected and auto-navigation is invoked, this element cannot be chosen as the first element to navigate to if its auto-nav group is non-null.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public virtual string AutoNavGroup { get; set; }
|
public virtual string AutoNavGroup { get; set; }
|
||||||
|
|
||||||
|
|
|
@ -373,7 +373,9 @@ namespace MLEM.Ui {
|
||||||
// we can't add these checks to GetChildren because it ignores false grandchildren
|
// we can't add these checks to GetChildren because it ignores false grandchildren
|
||||||
.Where(c => c.CanBeSelected && c.AutoNavGroup == this.SelectedElement?.AutoNavGroup);
|
.Where(c => c.CanBeSelected && c.AutoNavGroup == this.SelectedElement?.AutoNavGroup);
|
||||||
if (this.SelectedElement?.Root != this.ActiveRoot) {
|
if (this.SelectedElement?.Root != this.ActiveRoot) {
|
||||||
return backward ? children.LastOrDefault() : children.FirstOrDefault();
|
// if we don't have an element selected in this root, navigate to the first one without a group
|
||||||
|
var allowed = children.Where(c => c.AutoNavGroup == null);
|
||||||
|
return backward ? allowed.LastOrDefault() : allowed.FirstOrDefault();
|
||||||
} else {
|
} else {
|
||||||
var foundCurr = false;
|
var foundCurr = false;
|
||||||
Element lastFound = null;
|
Element lastFound = null;
|
||||||
|
@ -406,7 +408,8 @@ namespace MLEM.Ui {
|
||||||
// we can't add these checks to GetChildren because it ignores false grandchildren
|
// we can't add these checks to GetChildren because it ignores false grandchildren
|
||||||
.Where(c => c.CanBeSelected && c.AutoNavGroup == this.SelectedElement?.AutoNavGroup);
|
.Where(c => c.CanBeSelected && c.AutoNavGroup == this.SelectedElement?.AutoNavGroup);
|
||||||
if (this.SelectedElement?.Root != this.ActiveRoot) {
|
if (this.SelectedElement?.Root != this.ActiveRoot) {
|
||||||
return children.FirstOrDefault();
|
// if we don't have an element selected in this root, navigate to the first one without a group
|
||||||
|
return children.FirstOrDefault(c => c.AutoNavGroup == null);
|
||||||
} else {
|
} else {
|
||||||
Element closest = null;
|
Element closest = null;
|
||||||
float closestPriority = 0;
|
float closestPriority = 0;
|
||||||
|
|
Loading…
Reference in a new issue