* Added Applicaton.Popover.
Refactored FindDeepestView
* Popover prototype
* Testing highlight
* Fixed click outside issue
* Fixed DialogTests
* Fixed click outside issue (agbain)
* Enabled mouse wheel in Bar
* Enabled mouse wheel in Bar
* Progress. Broke arrangement
* Added popover tests.
Fixed a bunch more CM issues related ot unreliable unit tests.
Updated config.json to include Glyphs.
* Can't set ForceDriver to empty in Resources/config.json.
* added BUGBUG
* Made Position/ScreenPosition clear
* Added View.IsInHierarchy tests
* Added Contextmenuv2 scenario.
* Implemented CM2 in TextView
* Removed unneeded CM stuff from testhelpers
* Shortcut API docs
* Fixed keybinding unit tests
* Fixed mouse handling
* Fighting with CM related unit test failures
* Unit tests pass. I think.
* Shortcut code cleanup
* TextView uses new CM2
* Starting on OnSelect etc...
* Starting on OnSelect etc...
* Fixed ContextMenuv2
* ContextMenu is working again.
* Ugh. ANd fixed button api docs
* Fixed DrawHorizontalShadowTransparent (vertical was already fixed).
* Made Scenarios compatible with #nullable enable
* Undid some keybinding stuff
* Fixed stuff
* Sped up unit tests
* Sped up unit tests 2
* Sped up unit tests 3
* Messing with menus
* merged latest v2_develop
* Added more Popover unit tests
* Added more Popover unit tests2
* Fixed positioning bug
* Fixed mouse bug
* Fixed Bar draw issue
* WIP
* merge v2_develop
* CM2 sorta works
* Enabled Bar subclasses to have IDesignable
* Added ViewportSettings.Transparent
* Region -> nullable enable
* Added ViewportSettigs Editor
* merged v2_develop part 2
* merged v2_develop part 3
* WIP: GetViewsUnderMouse
* WIP: More GetViewsUnderMouse work
* Bars works again
* Added unit tests
* CM now works
* MenuItemv2 POC
* SubMenu POC
* CommandNotBound
* More POC
* Optimize Margin to not defer draw if there's no shadow
* Logger cleanup
* Reverted Generic
* Cascading mostly working
* fixed layout bug
* API docs
* API docs
* Fixed cascade
* Events basically work
* code cleanup
* Fixed IsDefault bug;
* Enabled hotkey support
* Made context-menu-like
* Improved usability
* Refactored ApplicationPopover again
* Cleanup
* Menuv2 POC basically complete
* Code Cleanup
* Made menu API simpler
* Fixed Strings bugs
* Got old ContextMenu scenario mostly working
* ContextMenu scenario now works
* ContextMenu fixes
* ContextMenu fixes
* Tons of menu cleanup
* ContextMenu works in TextView
* Fixed unit tes
* Added unit tests
* Fixed tests
* code cleanup
* More code cleanup
* Deep dive
* scenario
* typos
* Demo colorpicker in a Menu
* Added Region tests proving Region is broken in some Union cases
* fixed v2win/net
* Add W3C color enum with the RGB as numeric value
* Add transform helper class for W3cColor enum
For the sake of backwards compatibility prioritize parsing 16 color mode color names over the W3C colors because the previous resource-based color names/values had a mix of W3C and 16 color mode RGB values.
Mechanism for choosing/prioritizing one color scheme over the other is currently only available at higher application/driver/output level.
* IColorNameResolver enable null analysis
* Remove obsolete color name related ResourceManagerTests
* Replace remains of W3CColors with direct W3C color name resolver
Temporarily breaks backwards compatibility and tests even further.
* Add ANSI 4-bit (ColorName16) color name resolver
* Add multi-standard color name resolver
Combined resolver for both ANSI 4-bit (ColorName16) and W3C colors while trying to maintain backwards compatibility for ColorPicker.
* Split conditional name resolver test cases
* Change W3C colors tests to be similar to name resolvers
* Change W3cColorsTests to W3cColorNameResolverTests
More consistent when all the tests refer to the color name resolver layer.
* Make W3cColors internal
Color name resolver is the public interface.
* W3cColors: Use Color.Argb instead of individual RGB components
* MultiStandardColorNameResolver: Substitute instead of blocking alternative W3C names
Changes color picker behavior a bit, e.g. Aqua will match to Cyan instead of jumping to Aquamarine.
* Remove leftover color string resources
* Consistent position for IColorNameResolver #nullable enable directive
* Add missing XML comments to ColorScheme.Colors.cs
Uses StringBuilder and char span indexof search to reduce intermediate allocations.
The new implementation behaves slightly different compared to old implementation. In synthetic LFCR scenario it is correctly removed while the old implementation left the CR, which seems like an off-by-one error.
* Skip rune list allocation from accessing Cell.CombiningMarks property
The getter would every time allocate a new list when the backing field was not assigned, which is most of the time.
* Fix comment about performance
I accidentally word. Is this dangerous?
* Fixes#3968. Menu appears in wrong place when opened in a subview
* Fixes#3965. Cannot exit a Window with a CanFocus true MenuBar
* Fixes#3981. Drivers crash when middle or right click on a ContextMenu item
---------
Co-authored-by: Tig <tig@users.noreply.github.com>
* Change IConsoleOutput.Write(string) overload parameter to ReadOnlySpan<char>
Allows the caller more flexibility about choosing a buffer per use case.
* NetOutput: Write StringBuilder directly to the std out text stream
* Add EscSeqUtils.CSI_WriteCursorPosition
Writes cursor position sequence to text writer without string allocation.
* NetOutput: Skip cursor position escape sequence string allocation
* Replace CSI_(Enable|Disable)MouseEvents static properties with readonly fields
Changed for the sake of consistency with rest of the EscSegutils fields rather than performance. Also prevents bugs from accidentally setting the properties.
* Use EscSeqUtils.CSI_Append(Foreground|Background)ColorRGB in v2 drivers
* WindowsOutput SetCursorVisibility: Remove intermediate string builder
* WindowsOutput.WriteToConsole: Use rented array as intermediate write buffer
The large intermediate string builder remains a challenge. :)
* NetOutput: Console.Out for the sake of consistency
Also might have missed one of the Console.Out.Write(StringBuilder) calls...
* Avoid Rune.ToString() in NetOutput.Write(IOutputBuffer)
---------
Co-authored-by: Tig <tig@users.noreply.github.com>