* Initial plan
* Refactor Application.Mouse - Create IMouse interface and Mouse implementation
Co-authored-by: tig <585482+tig@users.noreply.github.com>
* Add enhanced documentation for Application.Mouse property
Co-authored-by: tig <585482+tig@users.noreply.github.com>
* Add parallelizable unit tests for IMouse interface
Co-authored-by: tig <585482+tig@users.noreply.github.com>
* Refactor Application.Mouse for decoupling and parallelism
Co-authored-by: tig <585482+tig@users.noreply.github.com>
* Move HandleMouseGrab method to IMouseGrabHandler interface
Co-authored-by: tig <585482+tig@users.noreply.github.com>
* Add parallelizable tests for IMouse and IMouseGrabHandler interfaces
Co-authored-by: tig <585482+tig@users.noreply.github.com>
* Add MouseEventRoutingTests - 27 parallelizable tests for View mouse event handling
Co-authored-by: tig <585482+tig@users.noreply.github.com>
* Fix terminology: Replace parent/child with superView/subView in MouseEventRoutingTests
Co-authored-by: tig <585482+tig@users.noreply.github.com>
* Fix coding standards: Use explicit types and target-typed new() in test files
Co-authored-by: tig <585482+tig@users.noreply.github.com>
* Update coding standards documentation with explicit var and target-typed new() guidance
Co-authored-by: tig <585482+tig@users.noreply.github.com>
* Refactor Application classes and improve maintainability
Refactored `Sixel` property to be immutable, enhancing thread safety.
Cleaned up `ApplicationImpl` by removing redundant fields, restructuring
methods (`CreateDriver`, `CreateSubcomponents`), and improving exception
handling. Updated `Run<T>` and `Shutdown` methods for consistency.
Standardized logging/debugging messages and fixed formatting issues.
Reorganized `IApplication` interface, added detailed XML documentation,
and grouped related methods logically.
Performed general code cleanup, including fixing typos, improving
readability, and removing legacy/unnecessary code to reduce technical debt.
* Code cleanup
* Remove unreferenced LayoutAndDraw method from ApplicationImpl
* Code cleanup and TODOs
- Updated namespaces to reflect the new structure.
- Added `Driver`, `Force16Colors`, and `ForceDriver` properties.
- Introduced `Sixel` collection for sixel image management.
- Added lifecycle methods: `GetDriverTypes`, `Shutdown`, and events.
- Refactored `Init` to support legacy and modern drivers.
- Improved driver event handling and screen abstraction.
- Updated `Run` method to align with the application lifecycle.
- Simplified `IConsoleDriver` documentation.
- Removed redundant methods and improved code readability.
* Refactor LayoutAndDraw logic for better encapsulation
Refactored `Application.Run` to delegate `LayoutAndDraw` to
`ApplicationImpl.Instance.LayoutAndDraw`, improving separation
of concerns. Renamed `forceDraw` to `forceRedraw` for clarity
and moved `LayoutAndDraw` implementation to `ApplicationImpl`.
Added a new `LayoutAndDraw` method in `ApplicationImpl` to
handle layout and drawing, including managing `TopLevels`,
handling active popovers, and refreshing the screen. Updated
the `IApplication` interface to reflect the new method and
improved its documentation.
Implemented `RequestStop` in `ApplicationImpl` and fixed
formatting inconsistencies in `Run<T>`. Added TODOs for future
refactoring to encapsulate `Top` and `TopLevels` into an
`IViewHierarchy` and move certain properties to `IApplication`.
* Refactor ApplicationImpl to enhance mouse and keyboard support
Added a new `Mouse` property to the `ApplicationImpl` class,
replacing its previous declaration, to improve mouse
functionality. Updated `MouseGrabHandler` to initialize with
a default instance of `MouseGrabHandler`.
Added comments to ensure the preservation of existing keyboard
settings (`QuitKey`, `ArrangeKey`, `NextTabKey`) for backward
compatibility. These changes enhance clarity, functionality,
and maintainability of the class.
* Merge IMouseGrabHandler into IMouse - consolidate mouse handling into single interface
Co-authored-by: tig <585482+tig@users.noreply.github.com>
* Rename Mouse to MouseImpl and Keyboard to KeyboardImpl for consistency
Co-authored-by: tig <585482+tig@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: tig <585482+tig@users.noreply.github.com>
Co-authored-by: Tig <tig@users.noreply.github.com>
* Remove continous press code from Application
* WIP prototype code to handle continuous press as subcomponent of View
* Prototype with Button
* Implement CWP
* Move to seperate classes and prevent double entry to Start
* Fix repeat clicking when moving mouse by removing phantom click code (old implementation of WantContinuousButtonPressed)
* Remove initial tick because it results in double activation e.g. button firing twice immediately as mouse is pressed down.
* Refactor DatePicker lamdas
* WIP investigate subcomponents instead of statics
* Add IMouseGrabHandler to IApplication
* Make mouse grabbing non static activity
* Make MouseHeldDown suppress when null fields e.g. app not initialized in tests
* Update test and remove dependency on Application
* Fix other mouse click and hold tests
* Code cleanup
* Update class diagram
* Fix bad xml doc references
* Fix timed events not getting passed through in v2 applications
* Make timed events nullable for tests that dont create an Application
* Remove strange blocking test
* WIP remove all idles and replace with zero timeouts
* Fix build of tests
* Fix unit tests
* Add wakeup call back in
* Comment out incredibly complicated test and fix others
* Fix test
* test fix
* Make Post execute immediately if already on UI thread
* Re enable test and simplify Invoke to just execute if in UI thread (up front)
* Remove xml doc references to idles
* Remove more references to idles
* Make Screen initialization threadsafe
* Add more exciting timeouts
* WIP add tests
* fix log
* fix test
* make continuous key press use smoth acceleration
* Rename _lock to _lockScreen
* Remove section on idles, they are not a thing anymore - and they kinda never were.
* Add nullable enable
* Add xml comment
* Fix namings and cleanup code
* xmldoc fix
* Rename LockAndRunTimers to just RunTimers
* Rename AddTimeout and RemoveTimeout (and event) to just Add/Remove
* Update description of MainLoop
* Commented out Run_T_Call_Init_ForceDriver_Should_Pick_Correct_Driver
* Again? Commented out Run_T_Call_Init_ForceDriver_Should_Pick_Correct_Driver
* Revert Commented out Run_T_Call_Init_ForceDriver_Should_Pick_Correct_Driver
* When mouse is released from MouseHeldDown reset host MouseState
* Fix namespaces in class diagram
* Apply @BDisp suggested fix
* Fix class diagrams
* Add lock
* Make TimeSpan.Zero definetly run
* Fix duplicate entry in package props
---------
Co-authored-by: Tig <tig@users.noreply.github.com>
* Tons of API doc updates
* Removed stale test
* Removed stale tests
* Fixed Skipped Shadow test 1
* Fixed Skipped Shadow test 2
* Fixed Skipped Shadow test 3
* Removed stale test
* Removed stale test2
* Explicit unregister of event handler on Application.Driver!.ClearedContents
* Added Toplevels to dict
* code cleanup
* spelling error
* Removed stale test3
* Removed stale test4
* Removed stale test5
* added script
* tweaked script
* tweaked script
* Created StressTests project; moved some tests
* Created IntegrationTests project; moved some tests
* New yml
* made old yml just unit tests
* Tweaked Button_IsDefault_Raises_Accepted_Correctly
* tweaked script
* cleaned up ymls
* tweakled up ymls
* stress tests...
* stress tests on ubuntu only
* Fixed WindowsDriver in InvokeLeakTest
* Fixed WindowsDriver in InvokeLeakTest2
* Added Directory.Packages.props.
Added Directory.Build.props
* Shortened StressTest time
* Removed dupe file.
* DemoFiles
* Moved all tests to ./Tests dir.
* Fixed release build issue
* Fixed .sln file
* Fixed .sl* files
* Fixing ymls
* Fixing interation tests
* Create link to the file TestHelpers.
* Created Tests/UnitTestsParallelizable.
Moved all obviously parallelizable tests.
Updated yml.
* fixing logs
* fixing logs2
* fixing logs3
* don't require stress to pass for PRs
* Fix a failure?
* tweaked script
* Coudl this be it?
* Moved tons of tests to parallelizable
* Fixed some stuff
* Script to find duplicate tests
* Testing workflows
* Updated to v4
* Fix RelativeBasePath issue
* Replace powershell to pwsh
* Add ignore projects.
* Removed dupe unit tests
* Code cleanup of tests
* Cleaned up test warnings
* yml tweak
* Moved setter
* tweak ymls
* just randomly throwing spaghetti at a wall
* Enable runing 5 test runners in par
* Turned off DEBUG_DISPOSABLE for par tests
* RunningUnitTests=true
* code cleanup (forcing more Action runs)
* DISABLE_DEBUG_IDISPOSABLE
* Added View.DebugIDisposable. False by default.
* Remobed bogus tareet
* Remobed bogus tareet2
* fixed warning
* added api doc
* fixed warning
* fixed warning
* fixed warning2
* fixed warning3
* fixed warning4
---------
Co-authored-by: BDisp <bd.bdisp@gmail.com>