1
0
Fork 0
mirror of https://github.com/Ellpeck/MLEM.git synced 2024-11-25 05:58:35 +01:00
Commit graph

492 commits

Author SHA1 Message Date
Ell
a143aef67c Revert scissor rectangle change since it doesn't support panels with complex transformations
Revert "Use a scissor rectangle for panels in favor of a render target, and marked UiSystem.DrawEarly and Element.DrawEarly as obsolete"

This reverts commit 3c4567e4a1.

Revert "cleaned up DrawEarly documentation references"

This reverts commit dc6c472b84.
2022-01-30 16:35:10 +01:00
Ell
dc6c472b84 cleaned up DrawEarly documentation references 2022-01-30 12:20:32 +01:00
Ell
3c4567e4a1 Use a scissor rectangle for panels in favor of a render target, and marked UiSystem.DrawEarly and Element.DrawEarly as obsolete 2022-01-30 01:13:59 +01:00
Ell
f3e6df6862 Made custom values of Element.Style persist when a new ui style is set 2022-01-22 23:34:52 +01:00
Ell
faa400c4e6 Added Element.OnStyleInit event 2022-01-22 23:05:29 +01:00
Ell
dbf370c968 Allow setting a default text alignment for paragraphs in UiStyle 2022-01-22 22:54:47 +01:00
Ell
80a6c6b5e2 Avoid unnecessary panel updates by using an Epsilon comparison when scrolling children 2022-01-09 01:15:05 +01:00
Ell
c28f6d858c Ensure that a panel gets notified of all relevant changes by calling OnChildAreaDirty for all grandchildren 2022-01-09 01:12:16 +01:00
Ell
68fc02b170 Fixed paragraph links having incorrect hover locations when using special text alignments 2022-01-07 20:50:32 +01:00
Ell
6e75e9ebb4 ensure that the paragraph changes occur when new links are added 2022-01-07 17:15:03 +01:00
Ell
b46975391b Only set a paragraph's area dirty when a text change would cause it to change size 2022-01-06 23:26:14 +01:00
Ell
29bbd61f8b reformat and cleanup 2021-12-28 14:56:11 +01:00
Ell
7e49eaef10 Allow for checkboxes and radio buttons to be disabled 2021-12-24 12:10:04 +01:00
Ell
c060d78010 put StringBuilder overloads to use 2021-12-22 13:03:40 +01:00
Ell
dae511e455 Made StyleProp immutable 2021-12-21 11:54:32 +01:00
Ell
3541b8d3e1 Automatically set area dirty when changing child padding or paragraph fonts 2021-12-21 00:01:57 +01:00
Ell
79354c444b fixed exception when elements get removed from their ui in Update 2021-12-14 13:42:31 +01:00
Ell
60dfbb1ec5 Added UiMetrics 2021-12-12 12:32:09 +01:00
Ell
55fae16768 Allow overriding SetAreaAndUpdateChildren and switch to using it in some locations 2021-12-11 17:39:49 +01:00
Ell
103d7c7503 Added a SquishingGroup element to MLEM.Ui 2021-12-11 17:26:55 +01:00
Ell
28a928ec2c Revert "Added PreventSiblingSpill to Element"
This reverts commit 3c74cc4845.
2021-12-11 01:04:35 +01:00
Ell
3c74cc4845 Added PreventSiblingSpill to Element 2021-12-11 00:36:50 +01:00
Ell
636522bc3e resolved some documentation warnings 2021-11-30 11:46:06 +01:00
Ell
84a6e5a29a Fixed some end-of-line inconsistencies when using the Right text alignment 2021-11-22 18:52:52 +01:00
Ell
84e2544dc8 Allow setting a custom effect and depth stencil state for ui drawing 2021-11-22 17:42:08 +01:00
Ell
5b99f29490 Fixed some inconsistencies with element transformations and mouse interaction 2021-11-22 15:13:08 +01:00
Ell
91d34c0a83 Remember the location that a scroll bar scroller was grabbed in when scrolling 2021-11-14 21:32:13 +01:00
Ell
2a7dc119eb Removed ScrollBar ScrollerOffset (which didn't actually work) 2021-11-14 21:04:50 +01:00
Ell
cd48ad6e2a ensure that child padding stays consistent if ScrollerSize gets updated 2021-11-14 20:28:53 +01:00
Ell
9cd72e9b4e Fixed panels that don't auto-hide their scroll bars ignoring their width for child padding 2021-11-14 19:50:24 +01:00
Ell
1fa9204680 added a style property for a panel's scroll bar offset 2021-11-11 16:43:27 +01:00
Ell
dc15a9139f added a bound check for the auto-calculated scroller size 2021-11-08 02:11:05 +01:00
Ell
6d554faaac mark panel children dirty when the scroll bar's max value (the height of the children) changes 2021-11-08 02:06:50 +01:00
Ell
3d0250bf86 Calculate panel scroll bar height based on content height 2021-11-08 02:02:59 +01:00
Ell
778d416774 mark panel's relevant children dirty when the render target changes 2021-11-05 23:28:32 +01:00
Ell
543201d178 ensure that relevant panel children are updated when children are changed 2021-11-05 23:22:39 +01:00
Ell
cf48fc372e skip unnecessary relevant children updates for panels 2021-11-01 22:58:37 +01:00
Ell
149669df99 fixed up Element docs and added a return value to UpdateAreaIfDirty 2021-11-01 15:29:59 +01:00
Ell
f2939253b1 Skip unnecessary area updates for elements with dirty parents 2021-11-01 13:39:37 +01:00
Ell
ca89d03ca4 Some more ui style improvements 2021-10-30 15:33:38 +02:00
Ell
3648352540 organized MLEM.Ui properties and fields slightly 2021-10-30 15:01:04 +02:00
Ell
0809cd0218 Added style properties for a lot of hardcoded default element styles 2021-10-29 23:33:15 +02:00
Ell
9ddc1f6975 Made Image ScaleToImage take ui scale into account 2021-10-29 17:11:45 +02:00
Ell
2be39a740e improve handling of arbitrary Epsilon values 2021-10-28 23:26:42 +02:00
Ell
45f970e0f2 added vertical movement to multiline text fields 2021-10-13 17:13:56 +02:00
Ell
5f2eb1845f Fixed text not being pasted into a text field at all if it contains characters that don't match the input rule 2021-10-12 19:58:31 +02:00
Ell
a47318c0a2 improved text field multi line handling 2021-10-12 18:28:06 +02:00
Ell
1d462b0252 fixed some multiline editing issues 2021-10-12 02:46:24 +02:00
Ell
11dd939009 Added a multiline editing mode to TextField 2021-10-12 02:16:09 +02:00
Ell
8f5d3083b5 Allow specifying a maximum amount of characters for a TextField 2021-10-11 23:35:50 +02:00
Ell
f021215066 fixed VerticalSpace height parameter being an integer 2021-10-01 03:42:27 +02:00
Ell
41b924ef34 Fixed rounding errors causing AutoInline elements to be pushed into the next line with some ui scales 2021-09-24 16:35:53 +02:00
Ell
1bbb12a1fa clarified auto-size exception in elements 2021-09-09 17:02:29 +02:00
Ell
9890c4895c Fixed tooltips not displaying correctly with auto-hiding paragraphs 2021-09-09 16:53:12 +02:00
Ell
a9a7f2b421 Revert "(attempt to) reduce element sizing incompatibilities for auto-width/height elements"
This reverts commit 094de058c4.
2021-08-05 03:47:03 +02:00
Ell
094de058c4 (attempt to) reduce element sizing incompatibilities for auto-width/height elements 2021-08-05 03:40:47 +02:00
Ell
8fac4a0b69 Allow adding Link children to non-Paragraph elements 2021-07-24 07:36:42 +02:00
Ell
01bec459de disallow creating Paragraphs without fonts 2021-07-22 04:51:41 +02:00
Ell
bb9b322580 Fixed tooltips with custom text scale not snapping to the mouse correctly in their first displayed frame 2021-07-22 04:27:57 +02:00
Ell
1067055bb5 code cleanup 2021-07-19 23:49:16 +02:00
Ell
abac738123 Removed LINQ Any and All usage in various methods to improve memory usage 2021-07-18 22:18:46 +02:00
Ell
6aa9ec03d4 Added customizable overloads for Keybind, Combination and GenericInput ToString methods 2021-07-13 15:41:42 +02:00
Ell
bb189261d7 Added a masking character to text fields 2021-07-08 18:17:39 +02:00
Ell
d1b229b589 moved sound classes into /Sound 2021-07-05 16:36:48 +02:00
Ell
642608a8a2 Fixed a crash if a paragraph has a link formatting code, but no font 2021-07-03 01:50:37 +02:00
Ell
1377941f1a added TreatSizeAsMaximum to ui elements 2021-06-25 16:48:41 +02:00
Ell
14940d39c5 added text alignment options to tokenized strings and paragraphs 2021-06-25 15:23:30 +02:00
Ell
ef83124cfa allow changing the color of panels 2021-06-22 01:14:06 +02:00
Ell
ce920b5219 added an element helper method to create a keybind button 2021-06-21 00:49:09 +02:00
Ell
a02334a34c turned some non-event events into events and added Disposing event to ui elements 2021-06-09 00:27:50 +02:00
Ell
e0a9971bdb added DynamicEnum to MLEM.Data 2021-06-08 13:32:01 +02:00
Ell
20e2d098ef suppress finalize for manually disposed panels 2021-06-08 00:32:07 +02:00
Ell
0dad4860c1 dispose of the panel's render target 2021-06-08 00:29:51 +02:00
Ell
ed02a83879 fixed panels drawing children early within the render target 2021-06-07 23:14:50 +02:00
Ell
289e0e8597 added a simple way to change the action that is executed when a link is pressed inside a paragraph 2021-05-30 17:57:39 +02:00
Ell
d385581c25 added formatted string truncation to tokenized strings and ui paragraphs 2021-05-18 16:47:38 +02:00
Ell
f94d471365 explicitly disallow auto-sizing incompatibilities to make debugging easier 2021-04-27 21:17:06 +02:00
Ell
f60c3b288a also apply auto-sizing if the element has no children at all 2021-04-26 19:21:11 +02:00
Ell
2abc3264a2 simplify auto-size checks 2021-04-26 19:06:54 +02:00
Ell
7792ce99c8 fixed auto-sized elements without children not being updated correctly 2021-04-26 18:55:18 +02:00
Ell
b48ed479a0 streamlined TextInputWrapper into MlemPlatform and included link opening 2021-04-23 00:17:46 +02:00
Ell
1123b815b3 updated some package declarations to clean up warnings 2021-04-22 19:59:35 +02:00
Ell
338cf383f4 removed RequiresOnScreenKeyboard 2021-04-22 19:40:14 +02:00
Ell
cf9bcc7ae4 updated to MonoGame 8 and added support for opening the on-screen keyboard to TextInputWrapper 2021-04-22 19:26:07 +02:00
Ell
2055c3a6ef convert tests to use graphics 2021-04-02 17:12:27 +02:00
Ell
e7fd026a33 added some UI tests 2021-04-01 19:36:56 +02:00
Ell
82b8c0ab49 fixed a rare stack overflow where scroll bars could get stuck in an auto-hide loop 2021-03-29 08:28:49 +02:00
Ell
b1ff703fe1 reintroduced tolerance for element size equality 2021-03-29 06:56:06 +02:00
Ell
79ba6864e7 fixed stack overflow with nested auto-sized children 2021-03-29 06:41:38 +02:00
Ell
3e20aaf6c5 fixed auto-sized elements doing unnecessarily many area updates 2021-03-29 05:49:09 +02:00
Ell
e6243b831c remove unnecessary references to GraphicsDevice from UiSystem 2021-03-29 02:26:44 +02:00
Ell
28eafffa32 allow setting a custom viewport for ui systems 2021-03-29 02:15:17 +02:00
Ell
602f19a2a8 some minor code style and format improvements 2021-03-24 22:44:39 +01:00
Ell
5f7956a7a3 properly stop a panel's scroll bar from being removed 2021-03-24 22:01:02 +01:00
Ell
be9748e70e fully disallow access to internal children collections 2021-03-24 01:39:41 +01:00
Ell
dcee3c5010 added an option to limit auto-heights in elements 2021-03-24 01:25:39 +01:00
Ell
3d314172d0 avoid recursion in Element.ForceUpdateArea 2021-03-24 01:10:42 +01:00
Ell
3384f48623 fixed up android demo, updated some dependencies and added icons to templates 2021-03-14 01:03:17 +01:00
Ell
d73539e41e added a text scale multiplier to Paragraph 2021-02-28 14:43:07 +01:00
Ell
7619ac0dcf added an extension method for adding tooltip for elements 2021-02-18 04:16:17 +01:00
Ell
9146d7f2ba disallow removing the scroll bar from a panel 2021-02-07 18:30:56 +01:00
Ell
fc9b93b129 Fixed a NRE with tooltips 2021-01-20 06:41:52 +01:00
Ell
e783f4f769 added a Tooltip constructor that uses TextCallback for the paragraph 2021-01-11 00:09:29 +01:00
Ell
106102adf6 clean up unused using statements 2020-12-14 21:51:27 +01:00
Ell
b963941b5c added methods for adding/removing tooltips easily 2020-12-05 22:42:10 +01:00
Ell
56db897c00 allow tooltips to appear later 2020-12-05 16:42:21 +01:00
Ell
c4114c73f8 fixed tooltip distance from the mouse changing with scale 2020-11-17 21:05:48 +01:00
Ell
6c3e9116ff return the element added by Dropdown 2020-11-08 18:16:12 +01:00
Ell
f6c4d83775 fixed panel element detection being incorrect if scrolling overflow is enabled 2020-11-05 01:16:01 +01:00
Ell
1a2fc814aa initialize the tooltip color to white 2020-10-31 17:55:46 +01:00
Ell
e7f2c8eca4 added a separate style property for tooltip text color 2020-10-31 17:42:39 +01:00
Ell
5bcfcaf3cb fixed Paragraph autoAdjustWidth parameter name 2020-09-30 22:49:09 +02:00
Ell
8b29903444 Replace ImageCode and TextField character ToString usage with ToCachedString for memory performace 2020-09-28 20:43:37 +02:00
Ell
aa064812fc removed obsolete CustomDrawGroup 2020-09-27 16:25:41 +02:00
Ell
333b4b033e Added a fail-safe for elements with conflicting auto-sizing settings so that they don't cause a cryptic stack overflow 2020-09-23 00:41:24 +02:00
Ell
eeedb0ae5c also don't display the tooltip if all o its children are hidden 2020-09-18 18:19:05 +02:00
Ell
fde243ed8b only display the tooltip if there is anything in it 2020-09-18 18:11:46 +02:00
Ell
7e89efec69 added text field input rules for file and path names 2020-09-13 18:05:55 +02:00
Ell
90d7aeb633 added a default text color to UiStyle 2020-09-13 18:00:19 +02:00
Ellpeck
00ce8bb229 fixed y offset not affecting elements with AutoInlineIgnoreOverflow anchor 2020-07-25 23:39:37 +02:00
Ellpeck
411d3c1cd9 allow for the transformation matrix to modify mouse positions 2020-07-20 14:18:26 +02:00
Ellpeck
abffa4db57 fixed an element transform issue and added a fancy button to the ui demo 2020-07-20 00:28:31 +02:00
Ellpeck
02cd074a3c cleaned up changes from f1d686f0c0 2020-07-16 15:55:55 +02:00
Ellpeck
f1d686f0c0 move CustomDrawGroup behavior into Element, allowing any element to inherit it 2020-07-15 23:21:52 +02:00
Ellpeck
9d5e9d4ccf tidied up paragraph link code 2020-06-30 00:49:42 +02:00
Ellpeck
ca4c8731bc only throw an exception in TextInputWrapper if it is required 2020-06-24 16:54:23 +02:00
Ellpeck
096131ce15 Drop SoundEffectInstance (mis)usage in favor of new SoundEffectInfo 2020-06-22 13:59:33 +02:00
Ellpeck
7dc08afa5a made UiStyle's ActionSound a SoundEffectInstance to allow for volume/pitch changes 2020-06-22 13:23:02 +02:00
Ellpeck
90e0ff55d1 use a custom character for image codes rather than trying to calculate spaces 2020-06-20 01:18:27 +02:00
Ellpeck
deec553b22 code cleanup 2020-06-18 17:24:35 +02:00
Ellpeck
71dabe7360 use specific check instead of generic one for panel fix 2020-06-17 01:44:16 +02:00
Ellpeck
2d332c3a48 allow panel children to be ordered arbitrarily rather than requiring the scroll bar in the first index 2020-06-17 01:43:08 +02:00
Ellpeck
914761519f expose a property in ScrollBar determining if we're currently scrolling it 2020-06-16 22:51:31 +02:00
Ellpeck
0ad3b2a305 Downgrade TextCopy since the new version causes issues on some devices 2020-06-16 22:48:13 +02:00
Ellpeck
0ea22435c2 updated dependencies 2020-06-13 03:19:20 +02:00
Ellpeck
0a8a3c3660 removed some obsolete features 2020-06-12 17:19:19 +02:00
Ellpeck
251261f3d7 added a more generic keybind and input handling system 2020-06-12 17:09:35 +02:00
Ellpeck
601423407d added PreventParentSpill to Element 2020-06-12 02:04:01 +02:00
Ellpeck
f2c544dc65 modified link behavior for paragraphs to be easier to modify 2020-06-09 18:56:01 +02:00
Ellpeck
6b1e5f8dd9 better implementation of the touch mousing from yesterday 2020-06-04 20:52:21 +02:00
Ellpeck
81ed3d3bee Revert "made elements also show their mouse over graphic when they're being touched"
This reverts commit d7f43617
2020-06-03 17:01:58 +02:00
Ellpeck
d7f43617c6 made elements also show their mouse over graphic when they're being touched 2020-06-03 15:58:08 +02:00
Ellpeck
79e0e1a63e added percentage sizing based on own data to element 2020-06-02 23:00:40 +02:00
Ellpeck
b0309c9707 added ScaleOrigin to RootElement 2020-06-02 16:15:41 +02:00
Ellpeck
95917e08d6 only mark element parent dirty when setting priority if it actually changed 2020-06-02 13:40:05 +02:00
Ellpeck
c7de0322b0 sanity check for panel render target size 2020-06-01 21:34:55 +02:00
Ellpeck
6c03ef2bd9 fixed hidden panels trying to update, causing a crash 2020-05-30 22:48:09 +02:00
Ellpeck
b270fe3977 made link clusters be selected properly 2020-05-27 15:19:17 +02:00
Ellpeck
f12284169e full xml documentation for MLEM.Ui 2020-05-22 17:02:24 +02:00
Ellpeck
af1918d545 added child addition and removal callbacks 2020-05-20 00:48:53 +02:00
Ellpeck
2461b78f1b made multi-line links be highlighted together 2020-05-19 21:52:29 +02:00
Ellpeck
5115bd8ca6 some element code cleanup 2020-05-17 00:59:15 +02:00
Ellpeck
85e63ac998 modify unnecessarily thorough SetAreaDirty when adding/removing children 2020-05-17 00:33:16 +02:00
Ellpeck
037ed43410 streamline ui text formatting and paragraph links 2020-05-17 00:10:29 +02:00
Ellpeck
fad06f28be modified link codes to use paragraphs' OnPressed 2020-05-16 01:56:00 +02:00
Ellpeck
7f0a8289e3 added link formatting codes! 2020-05-15 22:15:24 +02:00
Ellpeck
fcd898e16b finished the new formatting, finally! 2020-05-15 19:55:59 +02:00
Ellpeck
cc06b827ff use the new system in panel 2020-04-02 17:54:10 +02:00
Ellpeck
80f36c78bd a lot of font cleanup 2020-03-28 22:25:06 +01:00
Ellpeck
26264bf576 allow a lot of mem classes to have custom data added to them 2020-03-21 00:49:43 +01:00
Ellpeck
df418c2087 made the text field caret an actual caret finally 2020-03-19 03:27:21 +01:00
Ellpeck
cb56319924 added easy scale origin function to custom draw groups 2020-03-18 16:47:14 +01:00
Ellpeck
cd70b22ae5 made elements refer back to their controls for the selected element 2020-03-17 22:27:39 +01:00
Ellpeck
d07f470da3 good work me 2020-03-17 20:04:10 +01:00
Ellpeck
06ca5a8c04 allow changing an element's controls 2020-03-17 20:02:23 +01:00
Ellpeck
ba973c1b72 made sliders only react to pressing 2020-03-16 19:44:32 +01:00
Ellpeck
ceaaaefb47 fixed the fix 2020-03-16 19:22:08 +01:00
Ellpeck
6c866cec74 Fixed dropdown menus not working with gamepads 2020-03-16 19:13:33 +01:00
Ellpeck
e96b155f99 fixed selected element looking bad with smooth scrolling 2020-03-16 15:44:53 +01:00
Ellpeck
76cb94bb34 added smooth scrolling 2020-03-07 22:09:11 +01:00
Ellpeck
612df004e6 made custom draw group only end and begin when it needs to 2020-03-02 10:31:03 +01:00
Ellpeck
c92e4e0fd1 fixed text field crash when pasting an empty clipboard 2020-03-02 09:40:07 +01:00
Ellpeck
ae0fc22de3 added text copying and pasting to mlem.ui 2020-02-27 17:51:44 +01:00
Ellpeck
08c4281da1 added a new text input system 2020-02-24 14:03:53 +01:00
Ellpeck
d823064979 added HasValue() to styleprop 2020-02-06 17:36:51 +01:00
Ellpeck
31e2b72197 organize ui stuff a bit better 2020-02-06 01:59:33 +01:00
Ellpeck
b3331834e1 I did not want to push this here
This reverts commit ee511137
2020-02-06 01:51:41 +01:00
Ellpeck
ee5111372b part 1 2020-02-06 01:33:24 +01:00
Ellpeck
3f36093957 allow a paragraph to modify its rendered text for animations 2020-02-03 23:42:30 +01:00
Ellpeck
e37cfed757 added the ability to have mixed formatting 2020-02-03 15:38:27 +01:00
Ellpeck
556998239e Revert "formatting code redesign, part 1: Regex!"
This reverts commit b480026b
2020-02-03 04:37:14 +01:00
Ellpeck
b480026b7e formatting code redesign, part 1: Regex! 2020-02-03 03:04:13 +01:00
Ellpeck
0904368151 Revert "changed text input style to work on all devices including web"
This reverts commit 053724e4
2020-02-01 21:16:10 +01:00
Ellpeck
053724e4f8 changed text input style to work on all devices including web 2020-02-01 20:50:42 +01:00
Ellpeck
7e6534bfc1 added the option to disable buttons 2020-01-15 17:05:28 +01:00
Ellpeck
2ac28eced3 made instances be unique for each element 2020-01-14 22:41:52 +01:00
Ellpeck
9aebce96e8 added the ability to add sounds to elements 2020-01-14 22:39:40 +01:00
Ellpeck
43b665642d made tooltips be panels and remove the weird paragraph background thing 2019-12-31 14:08:13 +01:00
Ellpeck
da603c5f05 made custom draw groups be a bit easier to use 2019-12-29 19:28:56 +01:00
Ellpeck
bbdb424cbe made all groups update their areas manually since they don't draw it 2019-12-29 15:25:33 +01:00
Ellpeck
31d805fc04 fixed elements sometimes not notifying their auto-adjusting parents 2019-12-29 15:18:49 +01:00
Ellpeck
73f9653ddc made tooltips groups so that more stuff can be added to them easily 2019-12-28 14:23:40 +01:00
Ellpeck
b53588c32e redid that bugfix that I undid with that other bugfix 2019-12-28 12:59:14 +01:00
Ellpeck
f3372e93cb made format settings be non-struct-like 2019-12-26 19:34:42 +01:00
Ellpeck
3d0c3cd6d1 made format settings a bit better and also added drop shadow 2019-12-26 19:30:17 +01:00
Ellpeck
e0b83f6644 [breaking change] made the one em string be determined automatically for each font 2019-12-26 19:05:26 +01:00
Ellpeck
937b1757fe fixed stack overflow with auto-sizing elements 2019-12-26 12:49:04 +01:00
Ellpeck
4640a59054 made the scroll bar scroller only render when it actually makes sense 2019-12-26 12:35:47 +01:00
Ellpeck
969db1da1e made the info box disallow background selection 2019-12-25 19:16:07 +01:00
Ellpeck
f7810c8204 this was unintended 2019-12-25 12:19:55 +01:00