* Reapply "Allow control layout properties to be set via style sheet." (#5035)
This reverts commit af36d24892.
* Fix tests
MaxSize properties had wrong default. Oops.
This works by setting the stylesheet values into the regular control property fields when updated. This means 0 performance overhead except when updating styles, and even then it's probably negligible. A bitfield is used to track which properties are set and how.
This code is all done manual for now. I wanted to make a source gen for this but couldn't be arsed at the moment. The code manually written here is basically what a future source gen would generate optimally.
* Make various ValueList enumerators use spans
* Remove reference to EntityEventBus.OrderedRegistration
---------
Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>
The first measure would include scroll bar size even if the available size fit all the contents. This would make the returned size larger than it should be.
* Debug window collection popup
* Try fixing?
* DevUI shows children and string collections
* XAMLify the popup
* Rename popup
* Deduplicate code
* Simplify popup creation
* MouseFilter.Ignore is default so it can be removed
* Fix tooltips underflowing left side of screen
If the tooltip is so large it would clip the right side then it would underflow completely off-screen. This just clamps it instead.
* Better
* rubb
Fixed being able to position the cursor vertically if placeholder text was visible and multi-line. This is because the code was using line break info for the place holder. On top of not being correct behavior, this caused further exceptions since the cursor would get outside the editable text rope.
Fixed index exception if you try to move left in an empty text edit.
Has regression tests.
Fixes#4957, fixes#4953
- If scroll is not visible we don't handle it. This means nested containers don't interfere with their parents anymore.
- Fallback to Y-scrolling for H-scroll only containers.
Easiest way to repro is set a non-1.0 UIScale and open the main menu up, the logo will be fonky.
I checked the control dimensions and this aligned with my expectations.
* Add grid tile to Vector2 methods
Avoids me having to do it on content.
* Release note
* Engine
* Collapsible
* Add entitylookup methods for parent / map
Content's done it a bunch so make it reusable.
* Add MaxDimension property to Box2
Sometimes I want to pretend it's a circle radius.
* Add GetLocalPosition to controls
In my case I want the mouse's position inside of the control to show something under it unless there's a better way.
* Add global rectangles for controls
Like my other PR used to check if mouse is inbounds on the control without doing some skrunkly caching with mousemove.
* Add dotted line drawing to screen handle
Probably needs anti-aliasing but idk an easy way to do it.
* weh
* weh
* a
* weh
* weh
* Optimise ChunkEnumerator
It never unioned the AABB passed in with the grid's AABB so it might inadvertantly iterate a lot more dummy chunks than it needs to.
This helps speedup FindGridsIntersecting.
* weh
* Add DrawPrimitives overload for List<Vector2>
Storing ValueList in a field seems sussy so this is the next best thing.
* weh
* Bump pool size
* oop wrong method
* Add drawing methods for lists
Content may be using it over a valuelist for whatever reason.
* Add more ValueList conveniences
* Add more CollectionExtension methods
Maybe array.resize is bad for sandbox coin, in which case I'd also settle for changing it to a list instead.
* Add ToMapCoordinates method for NetCoordinates
* fr
* mraow
* Release notes
This brings default ButtonGroup behavior back to before #4841.
The original comments in the code *did* clearly intend for the other behavior to be the default, but the code was blatantly bugged (whoops) so this didn't happen. Content relied on this A LOT and it's quite sane behavior regardless so just change the default back call it a day.
Breaks SS14 stylesheets due to not responding to style properties anymore.
At least one of those seems to be unfixable (ModulateSelf usage) which makes me think we should just deprecate ModulateSelf instead. However I'm not fixing that here.
* Add GetLocalPosition to controls
In my case I want the mouse's position inside of the control to show something under it unless there's a better way.
* weh
---------
Co-authored-by: Pieter-Jan Briers <pieterjan.briers+git@gmail.com>
* Add global rectangles for controls
Like my other PR used to check if mouse is inbounds on the control without doing some skrunkly caching with mousemove.
* weh
---------
Co-authored-by: Pieter-Jan Briers <pieterjan.briers+git@gmail.com>
IPostInjectInit does not run through IoCManager.InjectDependencies(). This meant the logger was not initialized, and loading failures in the console history would crash the client startup due to an NRE while trying to log a warning.
See https://github.com/space-wizards/space-station-14/issues/23624
This causes tons of problems with OpenDream's small popup windows, and even for SS14 it doesn't make much sense.
The behavior can be re-enabled per window by setting WindowRoot.DisableAutoScaling to false.