mirror of
https://github.com/ppy/osu.git
synced 2024-12-14 14:32:55 +08:00
Add OnRowSelected
event to EditorTable
This commit is contained in:
parent
792334a190
commit
3c56b9c93a
@ -19,6 +19,8 @@ namespace osu.Game.Screens.Edit
|
||||
{
|
||||
public abstract partial class EditorTable : TableContainer
|
||||
{
|
||||
public event Action<Drawable>? OnRowSelected;
|
||||
|
||||
private const float horizontal_inset = 20;
|
||||
|
||||
protected const float ROW_HEIGHT = 25;
|
||||
@ -44,6 +46,17 @@ namespace osu.Game.Screens.Edit
|
||||
});
|
||||
}
|
||||
|
||||
protected void SetRowSelected(object? item)
|
||||
{
|
||||
foreach (var b in BackgroundFlow)
|
||||
{
|
||||
b.Selected = ReferenceEquals(b.Item, item);
|
||||
|
||||
if (b.Selected)
|
||||
OnRowSelected?.Invoke(b);
|
||||
}
|
||||
}
|
||||
|
||||
protected override Drawable CreateHeader(int index, TableColumn column) => new HeaderText(column?.Header ?? default);
|
||||
|
||||
private partial class HeaderText : OsuSpriteText
|
||||
|
@ -63,17 +63,11 @@ namespace osu.Game.Screens.Edit.Timing
|
||||
|
||||
selectedGroup.BindValueChanged(_ =>
|
||||
{
|
||||
// TODO: This should scroll the selected row into view.
|
||||
updateSelectedGroup();
|
||||
}, true);
|
||||
}
|
||||
|
||||
private void updateSelectedGroup()
|
||||
{
|
||||
// TODO: This should scroll the selected row into view.
|
||||
foreach (var b in BackgroundFlow)
|
||||
b.Selected = ReferenceEquals(b.Item, selectedGroup?.Value);
|
||||
}
|
||||
private void updateSelectedGroup() => SetRowSelected(selectedGroup?.Value);
|
||||
|
||||
private TableColumn[] createHeaders()
|
||||
{
|
||||
|
@ -86,7 +86,7 @@ namespace osu.Game.Screens.Edit.Timing
|
||||
RelativeSizeAxes = Axes.Y,
|
||||
Width = ControlPointTable.TIMING_COLUMN_WIDTH + margins,
|
||||
},
|
||||
new OsuScrollContainer
|
||||
scroll = new OsuScrollContainer
|
||||
{
|
||||
RelativeSizeAxes = Axes.Both,
|
||||
Child = table = new ControlPointTable(),
|
||||
@ -140,6 +140,8 @@ namespace osu.Game.Screens.Edit.Timing
|
||||
table.ControlGroups = controlPointGroups;
|
||||
changeHandler?.SaveState();
|
||||
}, true);
|
||||
|
||||
table.OnRowSelected += (drawable) => scroll.ScrollIntoView(drawable);
|
||||
}
|
||||
|
||||
protected override bool OnClick(ClickEvent e)
|
||||
|
@ -77,7 +77,7 @@ namespace osu.Game.Screens.Edit.Verify
|
||||
selectedIssue = verify.SelectedIssue.GetBoundCopy();
|
||||
selectedIssue.BindValueChanged(issue =>
|
||||
{
|
||||
foreach (var b in BackgroundFlow) b.Selected = b.Item == issue.NewValue;
|
||||
SetRowSelected(issue);
|
||||
}, true);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user