Commit Graph
377 Commits
Author SHA1 Message Date
f19a91be73 TextEdit GetLineCount access to public and new MaxLines property (#6989)
Co-authored-by: AJCM-git <ajcm_mail@disroot.org>
Co-authored-by: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
2026-08-22 17:04:34 +10:00
6054d7092f Add control tree lifecycle tests (#6993)
Co-authored-by: lunarica <lassovira@duck.com>
2026-08-22 16:52:57 +10:00
eoineoineoinandGitHub 5e4996bfe9 Fix "spawn tiles" window UIBox2 errors (#6932) 2026-08-08 16:35:56 +10:00
49515b03f7 Fix all warnings from Dispose on Controls (#5986)
Co-authored-by: metalgearsloth <comedian_vs_clown@hotmail.com>
2026-08-08 15:51:34 +10:00
metalgearslothandGitHub 3dd5b14c4b Font outline caching + draw batching for outlines (#6892) 2026-08-08 15:45:04 +10:00
PokandGitHub a4d22e4810 Fix Text Outline (#6889)
fix-text-outline
2026-08-02 01:44:10 +00:00
metalgearslothandGitHub bc55ae00d6 Box2 + Box2Rotated performance and fixes (#6668) 2026-08-01 15:30:41 +10:00
PokandGitHub 8a9123ab36 Text Outline (#6832) 2026-08-01 15:20:59 +10:00
pathetic meowmeowandGitHub bbfd27d78f XamlX upgrade (#6288) 2026-07-24 19:00:35 +10:00
metalgearslothandGitHub 9f32ee3584 Add event for SplitContainer being changed (#6659) 2026-07-24 00:14:15 +10:00
eoineoineoinandGitHub b3daa0b794 Fix BaseWindow jittering on resize (#6788) 2026-07-14 12:59:12 +10:00
Whatstone 47572c2e52 make TableContainer virtual and public 2026-07-07 08:22:08 -04:00
Jessica MandGitHub e128a7f695 Partially Revert "More Cursor Usage in Controls" (#6654)
revert button and scrollbar changes
2026-06-29 18:49:43 +10:00
PJB3005 1a09f17dad Add HBox and VBox convenience types. 2026-06-20 03:42:07 +02:00
PJB3005 a4f4275572 Add IUserInterfaceManager.GetRootForMouse and Popup.OpenAtCursor 2026-06-20 00:21:09 +02:00
ThomasandGitHub a79c6bbc1d Add Track StyleProperty to ScrollBar (#6559)
Add track style property to ScrollBar

It makes it easier to see that there's a scrollbar if there's a backing
track, especially when the grabber is very small.
2026-05-26 16:25:14 +02:00
ThomasandGitHub 0a648ab619 More Cursor Usage in Controls (#6583)
* Add cursors for controls

Have TextEdot use NotAllowed instead of Arrow for Disabled

Make ScrollBar use {H,V}Resize

Make BaseButton use Pointer/NotAllowed instead of Arrow

Make ItemList use NotALlowed/Pointer/Arrow

Make MenuTopButton use Pointer

Make Slider use HResize

Fix SplitContainer not changing DefaultCursorShape if it changed
orientation

Make Tree use Pointer/Arrow

Make TabContainer use Pointer

* Fix ScrollBar

It needs to also change MouseMove because we don't have track
functionality yet and thus we only want to show interactivity when we're
directly hovering/grabbing the scrollbar.

* Address review
2026-05-25 18:14:44 +02:00
ThomasandGitHub 0dc7da78cf Invalidate the measure of BoxContainer's SeparationOverride (#6572)
InvalidateMeasure of SeparationOverride in BoxContainer

It currently doesn't trigger a new measure/arrange, but it should.
2026-05-19 15:21:28 +02:00
ThomasandGitHub 00c1a9f9d2 Fix BoxContainer's SeparationOverride (#6570)
Fix BoxContainer's override property
2026-05-14 16:24:32 +02:00
ThomasandGitHub 2e5f20cfb2 Fix Overrides In WrapContainer (#6561)
Make {,Cross}SeparationOverride override StyleProperty

The doc comments say that Overide overrides the StyleProperty, but the
actual code makes it so that Seperationoverride is a fallback value.
2026-05-13 17:38:22 +02:00
83c2a1be11 [Dependency] source generator part 2 (#6550)
* [Dependency] source generator

No more reflection, no more codegen at runtime

Also various changes to Roslyn helpers to make this easier to write.

Requires all types with dependencies to be partial and not have readonly dependency fields. An analyzer enforces this at warning level, the previous injection strategies have remained in the code *for now* as a fallback.

No fallback is available for [field: Dependency] properties, due to a Roslyn bug.

Code Fixes exist. We love Roslyn

* Apply dependencies generator changes to all code

* Release notes

* Preprocessor got hands

* Handle nullable dependencies

These are bad but gotta deal with it.

* Apply suggestions from code review

Co-authored-by: Moony <moony@hellomouse.net>

* Fine, let's not use collection expressions

---------

Co-authored-by: Moony <moony@hellomouse.net>
2026-05-08 12:38:33 +02:00
TriviaSolariandGitHub eb0f03596c Allow hex colour input (#6485)
* Allow entering hex codes for colour selection

* Clarify comment

* Use method groups, fix alpha channel
2026-05-05 18:56:21 +02:00
MoonyandGitHub 90259ffda7 Fix a violation of measure invariants in ScrollContainer (#6494)
* Fix a violation of measure invariants in ScrollContainer

* Poke

* Fix ReturnMeasure-using UIs.
2026-05-05 12:49:39 +02:00
mastermiller01andGitHub a0809b6112 fix ScrollContainer nullable bool logic (#6484) 2026-03-26 14:31:49 -04:00
TayrtahnandGitHub d2792926e5 Remove [Virtual] attributes from abstract/sealed classes (#6482)
Removed [Virtual] attributes that shouldn't be there
2026-03-24 23:41:58 -04:00
JohnJohnandGitHub 74c993cb1d Fix scroll containers not working properly (#6471) 2026-03-23 20:19:04 +01:00
886df674fe allow hiding scroll bars in the scrollbox (#6451)
* add hiding scroll bar

* 14 billion dollars on this never being used once

* comments

* yes because what could VScrollBarHidden possibly MEAN?????????????

* Apply suggestions from code review

Co-authored-by: Moony <moony@hellomouse.net>

---------

Co-authored-by: Moony <moony@hellomouse.net>
2026-03-13 18:01:23 +01:00
PJB3005 e7f75ab35d Fix size of OSWindows on macOS (& probably Wayland)
The way SDL handles window coordinates passes through the native platform API's behavior instead of trying to make a consistent API, so the way sizes are handled on macOS is different.
2026-01-31 08:13:19 +01:00
pathetic meowmeowandGitHub c20343601d Make tabs wrap to available size (#6387) 2026-01-18 21:16:44 +01:00
eoineoineoinandGitHub 5b06066fcb Make some Control properties animatable (#6376) 2026-01-10 23:35:08 +01:00
TGRCDevandGitHub 7b245260e3 SpriteView updates its size whenever the entity is set (#6362)
* SpriteView updates its size whenever the entity is set

* SpriteView recalculates its measure when the entity changes
2026-01-02 16:41:20 +01:00
PJB3005 af7f4ec8e7 Make RichTextLabel.Text allow all tags again
Fixes #6360

I debated doing this with a special case in Robust.Xaml instead, but decided against it. This is mostly used for static contents anyways.
2025-12-31 23:15:06 +01:00
d78e3ce157 Extend AddMessage capabilites in RobustToolbox. (#6350)
push or w/e

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-12-24 15:42:40 +01:00
ad31ec64d3 Add some default Sanitization to RichTextEntry (#6333)
* PR time

* am dum dont make PRs at 3am

* file scoped. I pushed this to the wrong branch initially because I'm stupid

* Revert "file scoped. I pushed this to the wrong branch initially because I'm stupid"

This reverts commit 9a911caa77.

* Review

* Update API used by content to actually use the default values

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
2025-12-10 19:09:51 +01:00
PJB3005 dff5b5fe95 Prototype AspectRatioPanel UI control
Wrote this as a quicky, needed it for something. Don't feel like stabilizing it yet so it's internal.
2025-12-05 17:34:20 +01:00
eoineoineoinandGitHub 83a1098476 Fix bug where ButtonGroup would erroneously unpress buttons (#6271) 2025-11-30 16:57:12 +01:00
PJB3005 ab775af7cd Added FontTagHijackHolder to replace fonts resolved by FontTag.
Existing font prototype system is extremely half-baked and unusable. This allows bypassing it entirely for upcoming content changes.
2025-10-26 20:40:39 +01:00
PJB3005 8ac5fc58d2 Invalidate OutputPanel on style change
Fixes an incorrect height staying cached on font change.
2025-10-26 20:37:42 +01:00
PJB3005 8235bd8478 OptionButton can now be filtered 2025-10-26 17:38:41 +01:00
PJB3005 1657a49c1c Fix modifying Label.FontOverride not causing a layout update. 2025-10-25 17:56:58 +02:00
PJB3005 60d26be139 Add devwindow tab listing render targets
Copy TableContainer from content into engine. It's internal though.

Add various stuff to Clyde to allow the UI to access it. Includes a new IClydeInternal.RenderNow() which seems to not completely explode in my face.
2025-09-13 01:21:22 +02:00
DrSmugleafandGitHub b02c53c6ad Fix OutputPanel.SetMessage causing the panel to bounce if setting a message other than the last one (#6163) 2025-09-02 22:10:09 +02:00
PJB3005 c2c8af16d0 Fix framerate dependent UI animations 2025-08-30 17:37:36 +02:00
PJB3005 b61003e2a0 Fix DebugConsole completions in devwindow
PopupContainer now supports an AltOriginUpProperty so that the completion popup doesn't overlap the input bar.
2025-08-30 17:21:15 +02:00
PJB3005 fee79d8aa5 Make popups/modals in secondary windows work
We were relying on a global PopupRoot & ModalRoot, which only existed in the main window. This means things like OptionButton would pop out on the *main* window when put on secondary windows.

These two roots are now on the UIRoot instead. WindowRoot needs to have a function called to create these if you're using it manually, OSWindow supports it automatically.
2025-08-30 00:58:52 +02:00
PJB3005 a0ebb290e2 Add WrapContainer control
Lays items out sequentially, wrapping them onto different rows/columns if they stop fitting.

Has multiple options and should be very useful, in both content and engine.

Uses the new Axis system to implement layout on 4 axis, re-uses BoxContainer's code so BoxContainer also got a mild refactor.
2025-08-29 00:41:21 +02:00
pathetic meowmeowandGitHub 7a510298e1 Add the ability to scale ItemList icons (#6125) 2025-08-04 10:34:46 +02:00
Perry FraserandGitHub 6ae332d543 fix: use the actual top anchor in SetMarginsPreset (#6118) 2025-08-01 13:10:26 +02:00
Pieter-Jan BriersandGitHub cdd3afaa4c Remove redundant custom math types (#6078)
Vector3, Vector4, Matrix4, and Quaternion are now gone. Use System.Numerics instead.

This commit is just replacing usages, cleaning up using declarations, and moving over the (couple) helpers that are actually important.
2025-07-23 01:15:27 +02:00
portfiendandGitHub 78d807b13c Refactor ColorSelectorSliders.cs, fix color slider event stack overflow (#6072)
* add: IColorSelectorStrategy class

defines some common variables and functions that depend on the slider type
my hope is to kill all the switch statements in here

* add: IColorSelectorStrategy FromColorData method

* add: RGB and HSV color slider strategies

* add: initialize ColorSelectorStrategy

* refactor: rename IColorSelectorStrategy to IColorSliderStrategy

this makes more sense i think

* refactor: nuke switch statements, use strategy in colorselectorsliders

* remove: remove GetSliderLabels in favor of strategy

* refactor: better abstraction for slider InputBox.ValueChanged

* refactor: rename OnColorSet to OnSliderValueChanged
more intuitive

* refactor: turn alpha slider max value into a const
no magic numbers

* tweak: make color sliders update channels individually

* fix: add braces around this callback

* tweak: move some variables around
i realize there's an Order to this so

* add: throw error if UpdateSlider is called with invalid value

* add: documentation comments to ColorSelectorSliders

* refactor: simplify UpdateSlider

* refactor: simplify GetColorValueDivisor

* fix: solved the color slider stack overflow

* fix: ensure _strategy is set before other functions use it

* tweak: rename Update to UpdateAllSliders
clearer

* fix: update slider colors on update
accidentally removed it and forgot to put it back

* remove: redundant comment
false alarm

* fix: prevent inputbox infinite event loop
this was also erroneously changing the color whenever the slider type changed

* fix: reviews part 1
- changed ColorSliderStrategy into abstract class
- fixed "strategy" typo
- changed NotImplementedException into ArgumentOutOfRangeException

* fix: make selector strategy static instances
2025-07-12 14:51:02 +02:00