1
0
Fork 0
mirror of https://github.com/Ellpeck/MLEM.git synced 2024-11-22 20:58:34 +01:00

(attempt to) reduce element sizing incompatibilities for auto-width/height elements

This commit is contained in:
Ell 2021-08-05 03:40:47 +02:00
parent db7ee04d30
commit 094de058c4
2 changed files with 5 additions and 4 deletions

View file

@ -30,6 +30,7 @@ Improvements
- Removed LINQ Any and All usage in various methods to improve memory usage - Removed LINQ Any and All usage in various methods to improve memory usage
- Explicitly disallow creating Paragraphs without fonts to make starting out with MLEM.Ui less confusing - Explicitly disallow creating Paragraphs without fonts to make starting out with MLEM.Ui less confusing
- Allow adding Link children to non-Paragraph elements - Allow adding Link children to non-Paragraph elements
- Reduce sizing incompatibilities by ignoring percentage-based width and height for elements that set their width and height based on their children
Fixes Fixes
- Fixed a crash if a paragraph has a link formatting code, but no font - Fixed a crash if a paragraph has a link formatting code, but no font

View file

@ -693,11 +693,11 @@ namespace MLEM.Ui.Elements {
/// <returns>The actual size of this element, taking <see cref="Scale"/> into account</returns> /// <returns>The actual size of this element, taking <see cref="Scale"/> into account</returns>
protected virtual Vector2 CalcActualSize(RectangleF parentArea) { protected virtual Vector2 CalcActualSize(RectangleF parentArea) {
var ret = new Vector2( var ret = new Vector2(
this.size.X > 1 ? this.ScaledSize.X : parentArea.Width * this.size.X, this.size.X > 1 && !this.SetWidthBasedOnChildren ? this.ScaledSize.X : parentArea.Width * this.size.X,
this.size.Y > 1 ? this.ScaledSize.Y : parentArea.Height * this.size.Y); this.size.Y > 1 && !this.SetHeightBasedOnChildren ? this.ScaledSize.Y : parentArea.Height * this.size.Y);
if (this.size.X < 0) if (this.size.X < 0 && !this.SetWidthBasedOnChildren)
ret.X = -this.size.X * ret.Y; ret.X = -this.size.X * ret.Y;
if (this.size.Y < 0) if (this.size.Y < 0 && !this.SetHeightBasedOnChildren)
ret.Y = -this.size.Y * ret.X; ret.Y = -this.size.Y * ret.X;
return ret; return ret;
} }