mirror of
https://github.com/ppy/osu.git
synced 2024-11-15 16:27:43 +08:00
Ensure at least scale popover axis toggle is active at any time
As in, toggling off an axis if it is the only one enabled will enable the other one in turn. Co-authored-by: Dean Herbert <pe@ppy.sh>
This commit is contained in:
parent
4e8e4a34bd
commit
634f20e8de
@ -136,8 +136,26 @@ namespace osu.Game.Rulesets.Osu.Edit
|
|||||||
});
|
});
|
||||||
scaleInput.Current.BindValueChanged(scale => scaleInfo.Value = scaleInfo.Value with { Scale = scale.NewValue });
|
scaleInput.Current.BindValueChanged(scale => scaleInfo.Value = scaleInfo.Value with { Scale = scale.NewValue });
|
||||||
|
|
||||||
xCheckBox.Current.BindValueChanged(x => setAxis(x.NewValue, yCheckBox.Current.Value));
|
xCheckBox.Current.BindValueChanged(_ =>
|
||||||
yCheckBox.Current.BindValueChanged(y => setAxis(xCheckBox.Current.Value, y.NewValue));
|
{
|
||||||
|
if (!xCheckBox.Current.Value && !yCheckBox.Current.Value)
|
||||||
|
{
|
||||||
|
yCheckBox.Current.Value = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
updateAxes();
|
||||||
|
});
|
||||||
|
yCheckBox.Current.BindValueChanged(_ =>
|
||||||
|
{
|
||||||
|
if (!xCheckBox.Current.Value && !yCheckBox.Current.Value)
|
||||||
|
{
|
||||||
|
xCheckBox.Current.Value = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
updateAxes();
|
||||||
|
});
|
||||||
|
|
||||||
selectionCentreButton.Selected.Disabled = !(scaleHandler.CanScaleX.Value || scaleHandler.CanScaleY.Value);
|
selectionCentreButton.Selected.Disabled = !(scaleHandler.CanScaleX.Value || scaleHandler.CanScaleY.Value);
|
||||||
playfieldCentreButton.Selected.Disabled = scaleHandler.IsScalingSlider.Value && !selectionCentreButton.Selected.Disabled;
|
playfieldCentreButton.Selected.Disabled = scaleHandler.IsScalingSlider.Value && !selectionCentreButton.Selected.Disabled;
|
||||||
@ -152,6 +170,12 @@ namespace osu.Game.Rulesets.Osu.Edit
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void updateAxes()
|
||||||
|
{
|
||||||
|
scaleInfo.Value = scaleInfo.Value with { XAxis = xCheckBox.Current.Value, YAxis = yCheckBox.Current.Value };
|
||||||
|
updateMaxScale();
|
||||||
|
}
|
||||||
|
|
||||||
private void updateAxisCheckBoxesEnabled()
|
private void updateAxisCheckBoxesEnabled()
|
||||||
{
|
{
|
||||||
if (scaleInfo.Value.Origin != ScaleOrigin.SelectionCentre)
|
if (scaleInfo.Value.Origin != ScaleOrigin.SelectionCentre)
|
||||||
@ -234,12 +258,6 @@ namespace osu.Game.Rulesets.Osu.Edit
|
|||||||
|
|
||||||
private float getRotation(PreciseScaleInfo scale) => scale.Origin == ScaleOrigin.GridCentre ? gridToolbox.GridLinesRotation.Value : 0;
|
private float getRotation(PreciseScaleInfo scale) => scale.Origin == ScaleOrigin.GridCentre ? gridToolbox.GridLinesRotation.Value : 0;
|
||||||
|
|
||||||
private void setAxis(bool x, bool y)
|
|
||||||
{
|
|
||||||
scaleInfo.Value = scaleInfo.Value with { XAxis = x, YAxis = y };
|
|
||||||
updateMaxScale();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override void PopIn()
|
protected override void PopIn()
|
||||||
{
|
{
|
||||||
base.PopIn();
|
base.PopIn();
|
||||||
|
Loading…
Reference in New Issue
Block a user