mirror of
https://github.com/Ellpeck/MLEM.git
synced 2024-11-26 22:48:34 +01:00
fixed stack overflow with auto-sizing elements
This commit is contained in:
parent
4640a59054
commit
937b1757fe
2 changed files with 18 additions and 2 deletions
|
@ -321,7 +321,7 @@ namespace MLEM.Ui.Elements {
|
||||||
var lowest = this.GetLowestChild(e => !e.IsHidden);
|
var lowest = this.GetLowestChild(e => !e.IsHidden);
|
||||||
if (lowest != null) {
|
if (lowest != null) {
|
||||||
var newHeight = (lowest.UnscrolledArea.Bottom - pos.Y + this.ScaledChildPadding.Bottom) / this.Scale;
|
var newHeight = (lowest.UnscrolledArea.Bottom - pos.Y + this.ScaledChildPadding.Bottom) / this.Scale;
|
||||||
if ((int) newHeight != (int) this.size.Y) {
|
if (!newHeight.Equals(this.size.Y, 0.01F)) {
|
||||||
this.size.Y = newHeight;
|
this.size.Y = newHeight;
|
||||||
changed = true;
|
changed = true;
|
||||||
}
|
}
|
||||||
|
@ -331,7 +331,7 @@ namespace MLEM.Ui.Elements {
|
||||||
var rightmost = this.GetRightmostChild(e => !e.IsHidden);
|
var rightmost = this.GetRightmostChild(e => !e.IsHidden);
|
||||||
if (rightmost != null) {
|
if (rightmost != null) {
|
||||||
var newWidth = (rightmost.UnscrolledArea.Right - pos.X + this.ScaledChildPadding.Right) / this.Scale;
|
var newWidth = (rightmost.UnscrolledArea.Right - pos.X + this.ScaledChildPadding.Right) / this.Scale;
|
||||||
if ((int) newWidth != (int) this.size.X) {
|
if (!newWidth.Equals(this.size.X, 0.01F)) {
|
||||||
this.size.X = newWidth;
|
this.size.X = newWidth;
|
||||||
changed = true;
|
changed = true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,6 +13,22 @@ namespace MLEM.Extensions {
|
||||||
return (int) Math.Ceiling(f);
|
return (int) Math.Ceiling(f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static bool Equals(this float first, float second, float tolerance) {
|
||||||
|
return Math.Abs(first- second) <= tolerance;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool Equals(this Vector2 first, Vector2 second, float tolerance) {
|
||||||
|
return Math.Abs(first.X - second.X) <= tolerance && Math.Abs(first.Y - second.Y) <= tolerance;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool Equals(this Vector3 first, Vector3 second, float tolerance) {
|
||||||
|
return Math.Abs(first.X - second.X) <= tolerance && Math.Abs(first.Y - second.Y) <= tolerance && Math.Abs(first.Z - second.Z) <= tolerance;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool Equals(this Vector4 first, Vector4 second, float tolerance) {
|
||||||
|
return Math.Abs(first.X - second.X) <= tolerance && Math.Abs(first.Y - second.Y) <= tolerance && Math.Abs(first.Z - second.Z) <= tolerance && Math.Abs(first.W - second.W) <= tolerance;
|
||||||
|
}
|
||||||
|
|
||||||
public static Vector2 Floor(this Vector2 vec) {
|
public static Vector2 Floor(this Vector2 vec) {
|
||||||
return new Vector2(vec.X.Floor(), vec.Y.Floor());
|
return new Vector2(vec.X.Floor(), vec.Y.Floor());
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue