* 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.
* 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>
* #272 avoid mouse overlapping tooltip when near edges,
change tooltip colors to match mockups
* #272 WIP customizable tooltips, old approach currently working still
* #272 WIP customizable tooltips, old approach currently working still
* #272 ensure tooltips go away when disposing control
* #272 implement row-oriented GridContainer
* #272 generalize GridContainer to support
rows or cols
* #272 improve readability in new GridContainer
logic
* #272 GridContainer can expand in opposite
direction
* #272 GridContainer can expand in opposite
direction
* #272 GridContainer can expand in opposite
direction, fix test
* #272 add GridContainer capability to
limit by size rather than count
* #272 add some clarifications about ui scale and vp / rp
* #272 don't spam showtooltip
event, calculate tooltip
positioning using combined
minimum size
* UI layout v2.
All controls now act like containers.
Moved anchor/margin layout model to LayoutContainer
Implement basic WPF-like attached properties for the above LayoutContainer.
* Fix VV.
Give BoxContainer a preset capacity to reduce allocations in layout.
Removed Control.GetChild(string) and similar. This was no longer used (and was a pretty bad idea in general), and the implementation had a lot of wasted book keeping to do.
Use UpdateLayout() instead of DoUpdateLayout() in Control minsize changed to avoid doing redundant layout, and by extension style & minsize, updates.
Used RemoveAllChildren instead of DisposeAllChildren in EntitySpawnWindow because it's faster (way less stuff to clear, just let the GC handle it).
Optimized ResourcePath with a better GetHashCode(), better Equals, replacement for List<T>.ToArray()
Fixed enumerator allocations in stylesheet SelectorElement matching to speed up style updates.
ResourceCache now caches fallbacks to avoid constructing Resource instance when fetching fallback explicitly.
ResourceCache now has nested dictionaries for Type -> ResourcePath -> BaseResource storage of resources.
Use calculated property instead of auto property for TextureResource.Fallback
* Refactor UI system.
Deferred updating is used for styling & layout. This fixes the awful time complexity of containers.
Removed SetDefaults and Initialize. They were a bad idea alright.
* Fix build on .NET Framework.