Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixes #2921 - MainLoop refactoring #2922

Merged
merged 27 commits into from
Oct 21, 2023
Merged

Conversation

tig
Copy link
Collaborator

@tig tig commented Oct 18, 2023

Fixes #2921

IMainLoopDriver and ConsoleDriver were originally designed to be decoupled by Miguel to enable pluggabiliy he imagined. We've learned that all driver implementations end up tightly coupling them.

As a result there is a bunch of complexity (and potential for bugs like #2921) that could be removed by simplifying the design.

This PR will attempt to do this.

  • First step is already done: Fix WindowsDriver and CursesDriver to not use an Action for ProcessInput.
  • Change all Action based events on ConsoleDriver/Application to use the proper EventHandler pattern
  • Make MainLoop, IMainLoopDriver etc... internal implementation details, exposing curical methods/events on Application instead. Note this effectively means 3rd parties cannot build ConsoleDriver implementations; that's ok because nobody's ever done that anyway.
  • Further simplify the console driver implementations by removing PrepareToRun and getting rid of more duplicated code.

Pull Request checklist:

  • I've named my PR in the form of "Fixes #issue. Terse description."
  • My code follows the style guidelines of Terminal.Gui - if you use Visual Studio, hit CTRL-K-D to automatically reformat your files before committing.
  • My code follows the Terminal.Gui library design guidelines
  • I ran dotnet test before commit
  • I have made corresponding changes to the API documentation (using /// style comments)
  • My changes generate no new warnings
  • I have checked my code and corrected any poor grammar or misspellings
  • I conducted basic QA to assure all features are working

Copy link
Collaborator

@BDisp BDisp left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@tig please see my comments.

Terminal.Gui/ConsoleDrivers/CursesDriver/UnixMainLoop.cs Outdated Show resolved Hide resolved
Terminal.Gui/ConsoleDrivers/WindowsDriver.cs Outdated Show resolved Hide resolved
Copy link
Collaborator

@BDisp BDisp left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@tig please see my comments. Thanks.

Terminal.Gui/Application.cs Outdated Show resolved Hide resolved
Terminal.Gui/Application.cs Outdated Show resolved Hide resolved
Terminal.Gui/ConsoleDrivers/ConsoleDriver.cs Outdated Show resolved Hide resolved
@tig tig merged commit 6851b42 into gui-cs:v2_develop Oct 21, 2023
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants