Split Val into two enums, one with an Auto variant and one without#8096
Open
ickshonpe wants to merge 28 commits intobevyengine:mainfrom
Open
Split Val into two enums, one with an Auto variant and one without#8096ickshonpe wants to merge 28 commits intobevyengine:mainfrom
Val into two enums, one with an Auto variant and one without#8096ickshonpe wants to merge 28 commits intobevyengine:mainfrom
Conversation
Added a type `Breadth`, that is similar to `Val` but with only evaluatable variants.
Gave UiRect a type parameter, so it can take `Breadth` or `Val` values.
Added tests for `Breadth` and `UiRect`.
Changed style properties to use `Breadth` instead of `Val` for the padding and border properties.
Changed `bevy_ui::flex::convert::from_rect` to take an `UiRect<T: Into<Val>>` instead of a `UiRect`.
Made minimal necessary changes to the examples.
…padding and border values in `bevy_ui::flex::convert::from_style`
Val into Val and AutoVal types and split UiRect into Margin, Padding and Border typesVal into Val and AutoVal, and split UiRect into Margin, Padding and Border
Val into Val and AutoVal, and split UiRect into Margin, Padding and BorderVal and UiRect
AutoValVal into two enums, one with an Auto variant and one without
…hmeticError` to `ValArithmeticError`
…Num` helper functions.
This was referenced Aug 29, 2023
Contributor
|
FYI, in CSS what you refer to as |
Contributor
Author
Yep I don't like |
Contributor
|
Given how old this PR is, and how the usage of UiRect has evolved over time, I think perhaps this ship has sailed. At least, I haven't heard many complaints about this in discussion (as opposed to the never-ending "how do I center text?" questions). Even if we were to pursue this, it would probably be less work to start over from scratch. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Objective
Problem with
Val:Val'sAutovariant doesn't make sense for certainStylefields, such as the gap properties. In those cases internallyAutojust gets mapped to Taffy'sLengthPercentage::Points(0.). It's never ideal to have multiple representations for the same concept like this.Problems with
UiRect:UiRectis confusingly named (nothing it represents is a rectangle).UiRectfields are meaningless (at the moment at least, may change).UiRecthas to explain its different behaviour for each of the four use cases.Relevant discussions at #7656 and #7969
Combination of the changes from #7710 and #7569
Solution
Rename
ValtoNum.Add a new
Valenum without anAutovariant.Split
UiRectinto distinctMargin,PaddingandBordertypes.Implement the
UiRectconstructor functions using macros.Changelog
Numthat represents numeric values only and does not have anAutovariant.UiRect.Margin,Padding, andBordertypes and implemented their common functionality with macros.NumArithmeticErrorandNumConversionError.impl Into<Val>values.Styleto use theUiRectreplacements.from_style.Migration Guide
UiRecthas been split into distinctMargin,PaddingandBordertypes, with the same functionality.PaddingandBorderhaveNumfields.MarginhasValfields.Numenum replacesValin contexts where only numeric values are needed.