-
-
Notifications
You must be signed in to change notification settings - Fork 3.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
UI: image with Absolute position don't render correctly #13155
Comments
@nicoburns any idea? |
Hmm... no that's weird. It looks like it's about the right size in the x axis but it's getting stretched by about a factor of 2 in the y axis :/ |
That because width is set, but height isn't. If you remove width from style, you'll see big icons with correct proportions. |
@mockersf I set height same as width and got |
But if this solution gets approve, then I think we should add some notes to Migration guide, because such things could be in bevy users code |
Or better add some check/warning in |
No, images should keep their ratio when you set only one of their dimension |
Yeah, this definitely ought to be fixed in Taffy and/or bevy_ui (wherever the bug is) |
@mockersf The problem hides in taffy, because at some point size fills None by measured_size which is done componentwise. So there Size(Some(45), None) becomes Size(Some(45), Some(100)) which has no correct ratio. Looks like there is no issue in taffy for such case. |
I think the issue here is with the image measure function. It ought to read the image node's |
I agree with your desire for universal approach, but IMO size is already width and height which we fill partially, and min_size and max_size is for clamping but not for ratio description, if there is width or height set only, image should be abble grow or reduce unlimitedly but proportionally. I read the contribution.md page of taffy, it says that behaviour must be similar as in chrome css render. That's why IMO we should make html example first (test?) for taffy and reproduce this issue. If chrome behaves as we expect, but taffy doesn't, then this is the basis for creating a well-formed issue in taffy project. Otherwise it should be local fix in bevy_ui, perhaps UiImage could autofill the width or height or better aspect_ratio in Style at some stage. |
I didn't notice that bevy doesn't inform taffy about node types, that's why taffy can't make correct decision about size behaviour. I think Style::aspect_ratio is correct approach, I will make PR based on it. |
@alice-i-cecile Just wanted to call attention to this issue. It's a really not great regression which I believe it caused by the interaction between Taffy and Bevy's measure function. I don't think the fix should be too hard (either need to expose taffy's (but luckily Taffy doesn't have any other unreleased changes sitting around, so the upgrade should be quite straightforward). What kind of release date is 0.14 targeting? |
We're looking at 1-2 weeks for the release candidate. I agree that this is important to resolve. |
…zes (#13555) # Objective - Fixes #13155 - fixes #13517 - Supercedes #13381 - Requires DioxusLabs/taffy#661 ## Solution - Taffy has been updated to: - Apply size styles to absolutely positioned children - Pass the node's `Style` through to the measure function - Bevy's image measure function has been updated to make use of this style information ## Notes - This is currently using a git version of Taffy. If this is tested as fixing the issue then we can turn that into a Taffy 0.5 release (this would be the only change between Taffy 0.4 and Taffy 0.5 so upgrading is not expected to be an issue) - This implementation may not be completely correct. I would have preferred to extend Taffy's gentest infrastructure to handle images and used that to nail down the correct behaviour. But I don't have time for that atm so we'll have to iterate on this in future. This PR at least puts that under Bevy's control. ## Testing - I manually tested the game_menu_example (from #13155) - More testing is probably merited --- ## Changelog No changelog should be required as it fixes a regression on `main` that was not present in bevy 0.13. The changelog for "Taffy upgrade" may want to be changed from 0.4 to 0.5 if this change gets merged. --------- Co-authored-by: Alice Cecile <alice.i.cecile@gmail.com> Co-authored-by: François Mockers <francois.mockers@vleue.com>
Bevy version
main since #10690
What you did
Run example
game_manu
oroverflow_debug
What went wrong
Images that have
position_type: PositionType::Absolute
in their style are not displayed correctlyThe text was updated successfully, but these errors were encountered: