mirror of
https://github.com/gui-cs/Terminal.Gui.git
synced 2025-12-27 00:07:58 +01:00
* Adds basic MainLoop unit tests
* Remove WinChange action from Curses
* Remove WinChange action from Curses
* Remove ProcessInput action from Windows MainLoop
* Simplified MainLoop/ConsoleDriver by making MainLoop internal and moving impt fns to Application
* Modernized Terminal resize events
* Modernized Terminal resize events
* Removed un used property
* for _isWindowsTerminal devenv->wininit; not sure what changed
* Modernized mouse/keyboard events (Action->EventHandler)
* Updated OnMouseEvent API docs
* Using WT_SESSION to detect WT
* removes hacky GetParentProcess
* Updates to fix #2634 (clear last line)
* removes hacky GetParentProcess2
* Addressed mac resize issue
* Addressed mac resize issue
* Removes ConsoleDriver.PrepareToRun, has Init return MainLoop
* Removes unneeded Attribute methods
* Removed GetProcesssName
* Removed GetProcesssName
* Refactored KeyEvent and KeyEventEventArgs into a single class
* Revert "Refactored KeyEvent and KeyEventEventArgs into a single class"
This reverts commit 88a00658db.
* Fixed key repeat issue; reverted stupidity on 1049/1047 confusion
* Updated CSI API Docs
* merge
41 lines
1.2 KiB
C#
41 lines
1.2 KiB
C#
using System;
|
|
using System.Reactive.Concurrency;
|
|
using System.Reactive.Disposables;
|
|
using Terminal.Gui;
|
|
|
|
namespace ReactiveExample {
|
|
public class TerminalScheduler : LocalScheduler {
|
|
public static readonly TerminalScheduler Default = new TerminalScheduler();
|
|
TerminalScheduler () { }
|
|
|
|
public override IDisposable Schedule<TState> (
|
|
TState state, TimeSpan dueTime,
|
|
Func<IScheduler, TState, IDisposable> action) {
|
|
|
|
IDisposable PostOnMainLoop() {
|
|
var composite = new CompositeDisposable(2);
|
|
var cancellation = new CancellationDisposable();
|
|
Application.Invoke (() => {
|
|
if (!cancellation.Token.IsCancellationRequested)
|
|
composite.Add(action(this, state));
|
|
});
|
|
composite.Add(cancellation);
|
|
return composite;
|
|
}
|
|
|
|
IDisposable PostOnMainLoopAsTimeout () {
|
|
var composite = new CompositeDisposable (2);
|
|
var timeout = Application.AddTimeout (dueTime, () => {
|
|
composite.Add(action (this, state));
|
|
return false;
|
|
});
|
|
composite.Add (Disposable.Create (() => Application.RemoveTimeout (timeout)));
|
|
return composite;
|
|
}
|
|
|
|
return dueTime == TimeSpan.Zero
|
|
? PostOnMainLoop ()
|
|
: PostOnMainLoopAsTimeout ();
|
|
}
|
|
}
|
|
} |