Docs & Rules

tui-cs/Terminal.GuiGitHubLast refreshed Oct 3, 2026

This is a public, read-only report. Striff reads this repository's docs, turns each sentence that makes a claim about the code into a rule, and checks the rule against the code on the default branch. How this works

7+ names in these docs no longer match the code.

develop12489dflisted 8h ago

Is this yours? Install to manage it

Once installed, Striff checks every pull request.

400
3
1 stale3
369
4
1 stale4
365
24
2
2
46
1 stale39
1 stale18
1
31
17
17
1 stale14
1 stale30
11
39
46
28
28
1 stale
55 docs, listed Oct 3
tui-cs/Terminal.GuiOpen repository

Names these docs write that the code no longer has7

Each sentence below names a type the default branch doesn't declare, or declares somewhere else. Edit the doc so it matches the code, or bring the type back.

  • GoneNetDriver
    WindowsDriver, UnixDriver (curses-free), AnsiDriver, NetDriver (pure .NET System.Console).

    The repository once held Terminal.Gui/Drivers/NetDriver.cs. It doesn't now. Closest name there: Driver.

    View on GitHub

  • GoneMouseEventArgs
    MouseEventArgs args = new () { Position = new Point(5, 5) };

    The repository once held Terminal.Gui/Input/Mouse/MouseEventArgs.cs. It doesn't now. Closest names there: GrabMouseEventArgs, CommandEventArgs, PasteEventArgs.

    View on GitHub

  • GoneLineView
    CharMap, HexView, GraphView, ImageView, LineView, ScrollBarView

    The repository once held Terminal.Gui/Views/LineView.cs. It doesn't now. Closest names there: ListView, Line.

    View on GitHub

  • GoneMouseEventArgs
    - Generates MouseEventArgs for mouse input

    The repository once held Terminal.Gui/Input/Mouse/MouseEventArgs.cs. It doesn't now. Closest names there: GrabMouseEventArgs, CommandEventArgs, PasteEventArgs.

    View on GitHub

  • GoneMouseEventArgs
    Type MouseEventArgs, Use Case Mouse input, Key Properties Position , Flags , Handled

    The repository once held Terminal.Gui/Input/Mouse/MouseEventArgs.cs. It doesn't now. Closest names there: GrabMouseEventArgs, CommandEventArgs, PasteEventArgs.

    View on GitHub

  • GoneColorScheme
    Views with focus are rendered using their ColorScheme.Focus attribute

    The repository once held Terminal.Gui/Drawing/Color/ColorScheme.cs. It doesn't now. Closest names there: Color, Scheme.

    View on GitHub

  • GoneMouseEventArgs
    **[MouseEventArgs](~/api/Terminal.Gui.Input.Mouse.yml):**

    The repository once held Terminal.Gui/Input/Mouse/MouseEventArgs.cs. It doesn't now. Closest names there: GrabMouseEventArgs, CommandEventArgs, PasteEventArgs.

    View on GitHub

tui-cs/Terminal.Gui — documented rules

400 of 400 rules, printed October 3, 2026.

The sentence in your docs
Read Oct 2
Margin → Border → Padding → content area.
View has Margin
Holds
Read Oct 2
Margin → Border → Padding → content area.
View has Border
Holds
Read Oct 2
Margin → Border → Padding → content area.
View has Padding
Holds
Read Oct 2
Namespace Terminal.Gui.App, Contents Application , IApplication , Clipboard , session management
Application is in Terminal.Gui.App
Holds
Read Oct 2
Namespace Terminal.Gui.App, Contents Application , IApplication , Clipboard , session management
IApplication is in Terminal.Gui.App
Holds
Read Oct 2
Namespace Terminal.Gui.App, Contents Application , IApplication , Clipboard , session management
Clipboard is in Terminal.Gui.App
Holds
Read Oct 2
Namespace Terminal.Gui.Views, Contents All controls Button , Label , TextField , ListView , Dialog , etc
Button is in Terminal.Gui.Views
Holds
Read Oct 2
Namespace Terminal.Gui.Views, Contents All controls Button , Label , TextField , ListView , Dialog , etc
Label is in Terminal.Gui.Views
Holds
Read Oct 2
Namespace Terminal.Gui.Views, Contents All controls Button , Label , TextField , ListView , Dialog , etc
TextField is in Terminal.Gui.Views
Holds
Read Oct 2
Namespace Terminal.Gui.Views, Contents All controls Button , Label , TextField , ListView , Dialog , etc
ListView is in Terminal.Gui.Views
Holds
Read Oct 2
Namespace Terminal.Gui.Views, Contents All controls Button , Label , TextField , ListView , Dialog , etc
Dialog is in Terminal.Gui.Views
Holds
Read Oct 2
Namespace Terminal.Gui.ViewBase, Contents View , Pos , Dim , adornments ( Border , Margin , Padding )
View is in Terminal.Gui.ViewBase
Holds
Read Oct 2
Namespace Terminal.Gui.ViewBase, Contents View , Pos , Dim , adornments ( Border , Margin , Padding )
Pos is in Terminal.Gui.ViewBase
Holds
Read Oct 2
Namespace Terminal.Gui.ViewBase, Contents View , Pos , Dim , adornments ( Border , Margin , Padding )
Dim is in Terminal.Gui.ViewBase
Holds
Read Oct 2
Namespace Terminal.Gui.ViewBase, Contents View , Pos , Dim , adornments ( Border , Margin , Padding )
Border is in Terminal.Gui.ViewBase
Holds
Read Oct 2
Namespace Terminal.Gui.ViewBase, Contents View , Pos , Dim , adornments ( Border , Margin , Padding )
Margin is in Terminal.Gui.ViewBase
Holds
Read Oct 2
Namespace Terminal.Gui.ViewBase, Contents View , Pos , Dim , adornments ( Border , Margin , Padding )
Padding is in Terminal.Gui.ViewBase
Holds
Read Oct 2
Namespace Terminal.Gui.Drawing, Contents Color , Attribute , Scheme , LineCanvas , Glyphs
Color is in Terminal.Gui.Drawing
Holds
Read Oct 2
Namespace Terminal.Gui.Drawing, Contents Color , Attribute , Scheme , LineCanvas , Glyphs
Attribute is in Terminal.Gui.Drawing
Holds
Read Oct 2
Namespace Terminal.Gui.Drawing, Contents Color , Attribute , Scheme , LineCanvas , Glyphs
Scheme is in Terminal.Gui.Drawing
Holds
Read Oct 2
Namespace Terminal.Gui.Drawing, Contents Color , Attribute , Scheme , LineCanvas , Glyphs
LineCanvas is in Terminal.Gui.Drawing
Holds
Read Oct 2
Namespace Terminal.Gui.Drawing, Contents Color , Attribute , Scheme , LineCanvas , Glyphs
Glyphs is in Terminal.Gui.Drawing
Holds
Read Oct 2
Namespace Terminal.Gui.Input, Contents Key , KeyCode , Command , KeyBindings , MouseBindings
Key is in Terminal.Gui.Input
Holds
Read Oct 2
Namespace Terminal.Gui.Input, Contents Key , KeyCode , Command , KeyBindings , MouseBindings
Command is in Terminal.Gui.Input
Holds
Read Oct 2
Namespace Terminal.Gui.Input, Contents Key , KeyCode , Command , KeyBindings , MouseBindings
KeyBindings is in Terminal.Gui.Input
Holds
Read Oct 2
Namespace Terminal.Gui.Input, Contents Key , KeyCode , Command , KeyBindings , MouseBindings
MouseBindings is in Terminal.Gui.Input
Holds
Read Oct 2
Namespace Terminal.Gui.Text, Contents TextFormatter , TextDirection
TextFormatter is in Terminal.Gui.Text
Holds
Read Oct 2
Namespace Terminal.Gui.Text, Contents TextFormatter , TextDirection
TextDirection is in Terminal.Gui.Text
Holds
Read Oct 2
Namespace Terminal.Gui.Configuration, Contents TuiConfigurationBuilder , Settings POCOs, themes
TuiConfigurationBuilder is in Terminal.Gui.Configuration
Holds
Read Oct 2
**Terminal.Gui.Drawing.Attribute** — The color/style Attribute is a readonly record struct in Terminal.Gui.Drawing; it collides with System.Attribute. Qualify or alias it when System is also imported.
Attribute is a value type
Holds
Read Oct 2
**Terminal.Gui.Drawing.Attribute** — The color/style Attribute is a readonly record struct in Terminal.Gui.Drawing; it collides with System.Attribute. Qualify or alias it when System is also imported.
Attribute is declared readonly
Holds
Read Oct 2
Use UseRasterGraphics and IsUsingRasterGraphics for new code;
ImageView has UseRasterGraphics
Holds
Read Oct 2
Use UseRasterGraphics and IsUsingRasterGraphics for new code;
ImageView has IsUsingRasterGraphics
Holds
Read Oct 2
UseSixel and IsUsingSixel remain obsolete compatibility shims.
ImageView has UseSixel
Holds
Read Oct 2
UseSixel and IsUsingSixel remain obsolete compatibility shims.
ImageView has IsUsingSixel
Holds
Read Oct 2
The static <xref:Terminal.Gui.App.Application> class is marked obsolete but still functional for backward compatibility.
Application is annotated with Obsolete
Holds
Read Oct 2
Every view now has an <xref:Terminal.Gui.ViewBase.View.App> property that references its application context:
View has App
Holds
Read Oct 2
Terminal.Gui v2 introduces the **IRunnable** interface pattern that decouples runnable behavior from the Runnable class hierarchy.
IRunnable is a contract
Holds
Read Oct 2
[Init()](xref:Terminal.Gui.App.IApplication.Init*) - Returns <xref:Terminal.Gui.App.IApplication> for chaining
IApplication has an Init method
Holds
Read Oct 2
[Run<TRunnable>()](xref:Terminal.Gui.App.IApplication.Run*) - Creates and runs runnable, returns <xref:Terminal.Gui.App.IApplication>
IApplication has Run
Holds
Read Oct 2
[GetResult()](xref:Terminal.Gui.App.IApplication.GetResult*) / GetResult<T>() - Extract typed result after run
IApplication has a GetResult method
Holds
Read Oct 2
During disposal, MainLoopCoordinator.Stop() performs terminal-side cleanup (including kitty keyboard disable when it was enabled) before disposing output resources.
MainLoopCoordinator has a Stop method
Holds
Read Oct 2
**<xref:Terminal.Gui.App.IRunnable.IsRunning>** - True when runnable is on <xref:Terminal.Gui.App.IApplication.SessionStack>
IRunnable has IsRunning
Holds
Read Oct 2
**<xref:Terminal.Gui.App.IRunnable.IsModal>** - True when runnable is at top of stack (capturing all input)
IRunnable has IsModal
Holds
Read Oct 2
**Result** - Typed result value set before stopping
IRunnable has Result
Holds
Read Oct 2
Event <xref:Terminal.Gui.App.IRunnable.IsRunningChanging>, Cancellable ✓, When Before add/remove from stack, Use Case Extract result, prevent close
IRunnable has IsRunningChanging
Holds
Read Oct 2
Event <xref:Terminal.Gui.App.IRunnable.IsRunningChanged>, Cancellable ✗, When After stack change, Use Case Post-start/stop cleanup
IRunnable has IsRunningChanged
Holds
Read Oct 2
Event IsModalChanged, Cancellable ✗, When After modal state change, Use Case Update UI after focus change
IRunnable has IsModalChanged
Holds
Read Oct 2
The <xref:Terminal.Gui.App.IApplication.SessionStack> manages all running <xref:Terminal.Gui.App.IRunnable> sessions:
IApplication has SessionStack
Holds
Read Oct 2
<xref:Terminal.Gui.App.IApplication.TopRunnable> returns current modal runnable
IApplication has TopRunnable
Holds
Read Oct 2
**Important:** The static <xref:Terminal.Gui.App.Application> class uses a singleton (Application.Instance), while [Application.Create()](xref:Terminal.Gui.App.Application.Create*) creates new instances.
Application has Instance
Holds
Read Oct 2
**Important:** The static <xref:Terminal.Gui.App.Application> class uses a singleton (Application.Instance), while [Application.Create()](xref:Terminal.Gui.App.Application.Create*) creates new instances.
Application has a Create method
Holds
Read Oct 2
Applications manage sessions through [Begin()](xref:Terminal.Gui.App.IApplication.Begin*) and [End()](xref:Terminal.Gui.App.IApplication.End*):
IApplication has Begin and End methods
Holds
Read Oct 2
The <xref:Terminal.Gui.App.IApplication.ForceDriver> property is a configuration property that allows you to specify which driver to use.
IApplication has ForceDriver
Holds
Read Oct 2
The static Application.ForceDriverChanged event is raised when the <xref:Terminal.Gui.App.IApplication.ForceDriver> property changes:
Application has ForceDriverChanged
Holds
Read Oct 2
Similar to <xref:Terminal.Gui.ViewBase.View.App>, views now have a Driver property for accessing driver functionality.
View has Driver
Holds
Read Oct 2
IApplication.Screen is the single source of truth for the rendering region:
IApplication has Screen
Holds
Read Oct 2
AnsiOutput.SetCursorPositionImpl adds App.Screen.Y to row coordinates.
AnsiOutput has SetCursorPositionImpl
Holds
Read Oct 2
ApplicationMouse.RaiseMouseEvent subtracts App.Screen.Y from ScreenPosition.Y.
ApplicationMouse has RaiseMouseEvent
Holds
Read Oct 2
**Values** — Append-only chain of values accumulated as the command propagates.
ICommandContext has Values
Holds
Read Oct 2
**Value** — Convenience accessor returning Values[^1] (the most recently appended value), or null if empty.
ICommandContext has Value
Holds
Read Oct 2
The <xref:Terminal.Gui.ViewBase.DimAuto> type is a specialized <xref:Terminal.Gui.ViewBase.Dim> class in Terminal.Gui v2 that enables automatic sizing of a <xref:Terminal.Gui.ViewBase.View> based on its content.
DimAuto extends Dim
Holds
Read Oct 2
The <xref:Terminal.Gui.ViewBase.DimAutoStyle> enum defines the different strategies that <xref:Terminal.Gui.ViewBase.DimAuto> can employ to size a view.
DimAutoStyle is an enumeration
Holds
Read Oct 2
<xref:Terminal.Gui.App.Application.LayoutAndDraw(System.Boolean)> can be called to immediately trigger layout and drawing outside of the normal iteration cycle
Application has a LayoutAndDraw method
Holds
Read Oct 2
Tests can call Draw() directly to update the back buffer, then call IDriver.Refresh() to output to the terminal
IDriver has a Refresh method
Holds
Read Oct 2
2) Setting formatting options, such as TextFormatter.Alignment.
TextFormatter has Alignment
Holds
Read Oct 2
3) Calling TextFormatter.Draw()(Terminal.Gui.IDriver, System.Drawing.Rectangle,Terminal.Gui.Attribute,Terminal.Gui.Attribute,System.Drawing.Rectangle).
TextFormatter has a Draw method
Holds
Read Oct 2
After all peers complete, MarginView.DrawMargins() performs a **second pass** that draws transparent margins (shadows).
MarginView has a DrawMargins method
Holds
Read Oct 2
For example, to prevent the viewport from being cleared, override OnClearingViewport() to return true, or subscribe to the ClearingViewport event and set Cancel = true.
View has an OnClearingViewport method
Holds
Read Oct 2
When ImageView.UseRasterGraphics is true, the driver uses the best available terminal raster protocol:
ImageView has UseRasterGraphics
Holds
Read Oct 2
Kitty graphics, when <xref:Terminal.Gui.Drivers.IDriver.KittyGraphicsSupport> reports support and the output path has Kitty enabled.
IDriver has KittyGraphicsSupport
Holds
Read Oct 2
Sixel, when Kitty is not active and <xref:Terminal.Gui.Drivers.IDriver.SixelSupport> reports support.
IDriver has SixelSupport
Holds
Read Oct 2
The obsolete ImageView.UseSixel and ImageView.IsUsingSixel members still work as compatibility shims;
ImageView has UseSixel
Holds
Read Oct 2
The obsolete ImageView.UseSixel and ImageView.IsUsingSixel members still work as compatibility shims;
ImageView has IsUsingSixel
Holds
Read Oct 2
use UseRasterGraphics and IsUsingRasterGraphics in new code.
ImageView has IsUsingRasterGraphics
Holds
Read Oct 2
To customize Sixel encoding, assign ImageView.SixelEncoder before setting Image.
ImageView has SixelEncoder
Holds
Read Oct 2
Bold, underline, and other formatting attributes are supported via the Attribute.Style property.
Attribute has Style
Holds
Read Oct 2
Terminal.Gui supports 24-bit true color (16.7 million colors) via the <xref:Terminal.Gui.Drawing.Color> struct.
Color is a value type
Holds
Read Oct 2
Terminal.Gui provides comprehensive support for W3C standard color names plus additional common terminal colors via the <xref:Terminal.Gui.Drawing.StandardColor> enum.
StandardColor is an enumeration
Holds
Read Oct 2
Color.None is a special sentinel value (alpha=0) that tells the driver to emit ANSI reset codes (CSI 39m / CSI 49m) instead of explicit RGB values.
Color has None
Holds
Read Oct 2
The Color.IsDarkColor() method returns true if a color's HSL lightness is below 50%.
Color has an IsDarkColor method
Holds
Read Oct 2
Color.GetBrighterColor(double, bool?) — Makes a color more visually prominent.
Color has a GetBrighterColor method
Holds
Read Oct 2
Color.GetDimmerColor(double, bool?) — Makes a color less visually prominent.
Color has a GetDimmerColor method
Holds
Read Oct 2
The <xref:Terminal.Gui.Drawing.Glyphs> class defines the common set of glyphs used to draw checkboxes, lines, borders, etc...
Glyphs is a concrete implementation
Holds
Read Oct 2
It has a Start point, a Length (positive = right/down, negative = left/up, zero = a single junction point), an Orientation, a <xref:Terminal.Gui.Drawing.LineStyle>, and an optional color <xref:Terminal.Gui.Drawing.Attribute>.
StraightLine has Start
Holds
Read Oct 2
It has a Start point, a Length (positive = right/down, negative = left/up, zero = a single junction point), an Orientation, a <xref:Terminal.Gui.Drawing.LineStyle>, and an optional color <xref:Terminal.Gui.Drawing.Attribute>.
StraightLine has Length
Holds
Read Oct 2
It has a Start point, a Length (positive = right/down, negative = left/up, zero = a single junction point), an Orientation, a <xref:Terminal.Gui.Drawing.LineStyle>, and an optional color <xref:Terminal.Gui.Drawing.Attribute>.
StraightLine has Orientation
Holds
Read Oct 2
It has a Start point, a Length (positive = right/down, negative = left/up, zero = a single junction point), an Orientation, a <xref:Terminal.Gui.Drawing.LineStyle>, and an optional color <xref:Terminal.Gui.Drawing.Attribute>.
StraightLine has Attribute
Holds
Read Oct 2
When you call GetCellMap(), the canvas walks every point within its bounds:
LineCanvas has a GetCellMap method
Holds
Read Oct 2
Every <xref:Terminal.Gui.ViewBase.View> has its own LineCanvas.
View has LineCanvas
Holds
Read Oct 2
When SuperViewRendersLineCanvas is true on a SubView, its lines are merged into the SuperView's canvas via LineCanvas.Merge().
LineCanvas has a Merge method
Holds
Read Oct 2
When SuperViewRendersLineCanvas is true on a SubView, its lines are merged into the SuperView's canvas via LineCanvas.Merge().
View has SuperViewRendersLineCanvas
Holds
Read Oct 2
SubViews that render their own LineCanvas independently (the default) are composited using a painters' algorithm during View.RenderLineCanvas().
View has a RenderLineCanvas method
Holds
Read Oct 2
<xref:Terminal.Gui.Drawing.LineStyle.None> has **no special handling** inside <xref:Terminal.Gui.Drawing.LineCanvas>.
LineStyle has None
Holds
Read Oct 2
When passed to AddLine, the line is stored and participates in intersection resolution like any other.
LineCanvas has AddLine
Holds
Read Oct 2
This calls <xref:Terminal.Gui.Drawing.StraightLineExtensions.Exclude*> to split and remove overlapping lines.
StraightLineExtensions has Exclude
Holds
Read Oct 2
<xref:Terminal.Gui.Drawing.LineCanvas.Exclude*> suppresses resolved cells from GetCellMap output **without affecting the underlying geometry**.
LineCanvas has Exclude
Holds
Read Oct 2
<xref:Terminal.Gui.Drawing.LineCanvas.Reserve*> marks positions as intentionally empty for multi-canvas compositing.
LineCanvas has Reserve
Holds
Read Oct 2
The Thickness class contains properties for the left, top, right, and bottom thickness.
Thickness has Left
Holds
Read Oct 2
The Thickness class contains properties for the left, top, right, and bottom thickness.
Thickness has Top
Holds
Read Oct 2
The Thickness class contains properties for the left, top, right, and bottom thickness.
Thickness has Right
Holds
Read Oct 2
The Thickness class contains properties for the left, top, right, and bottom thickness.
Thickness has Bottom
Holds
Read Oct 2
The <xref:Terminal.Gui.ViewBase.AdornmentImpl> class uses <xref:Terminal.Gui.Drawing.Thickness> to support drawing the frame around a view.
AdornmentImpl depends on Thickness
Holds
Read Oct 2
The ViewDiagnosticFlags.DrawIndicator flag can be set on View.Diagnostics to cause an animated glyph to appear in the <xref:Terminal.Gui.ViewBase.Border> of each View.
ViewDiagnosticFlags has DrawIndicator
Holds
Read Oct 2
The ViewDiagnosticFlags.DrawIndicator flag can be set on View.Diagnostics to cause an animated glyph to appear in the <xref:Terminal.Gui.ViewBase.Border> of each View.
View has Diagnostics
Holds
Read Oct 2
The glyph will animate each time that View's Draw method is called where either <xref:Terminal.Gui.ViewBase.View.NeedsDraw> or SubViewNeedsDraw is set.
View has a Draw method
Holds
Read Oct 2
The glyph will animate each time that View's Draw method is called where either <xref:Terminal.Gui.ViewBase.View.NeedsDraw> or SubViewNeedsDraw is set.
View has NeedsDraw
Holds
Read Oct 2
The glyph will animate each time that View's Draw method is called where either <xref:Terminal.Gui.ViewBase.View.NeedsDraw> or SubViewNeedsDraw is set.
View has SubViewNeedsDraw
Holds
Read Oct 2
Views can access application-level drawing functionality through View.App:
View has App
Holds
Read Oct 2
<xref:Terminal.Gui.ViewBase.View>'s Move(col, row) for positioning
View has a Move method
Holds
Read Oct 2
<xref:Terminal.Gui.ViewBase.View>'s AddRune() and AddStr() for drawing
View has an AddRune method
Holds
Read Oct 2
<xref:Terminal.Gui.ViewBase.View>'s AddRune() and AddStr() for drawing
View has an AddStr method
Holds
Read Oct 2
**Extensibility** - custom drivers can be registered via DriverRegistry.Register()
DriverRegistry has a Register method
Holds
Read Oct 2
Init(), Refresh(), End() - Core lifecycle methods
IDriver has an Init method
Holds
Read Oct 2
Init(), Refresh(), End() - Core lifecycle methods
IDriver has a Refresh method
Holds
Read Oct 2
GetName(), GetVersionInfo() - Driver identification
IDriver has a GetName method
Holds
Read Oct 2
Suspend() - Platform-specific suspend support
IDriver has a Suspend method
Holds
Read Oct 2
Clipboard - OS clipboard integration
IDriver has Clipboard
Holds
Read Oct 2
Screen, Cols, Rows, Left, Top - Screen dimensions
IDriver has Screen
Holds
Read Oct 2
Screen, Cols, Rows, Left, Top - Screen dimensions
IDriver has Cols
Holds
Read Oct 2
Screen, Cols, Rows, Left, Top - Screen dimensions
IDriver has Rows
Holds
Read Oct 2
Screen, Cols, Rows, Left, Top - Screen dimensions
IDriver has Left
Holds
Read Oct 2
Screen, Cols, Rows, Left, Top - Screen dimensions
IDriver has Top
Holds
Read Oct 2
SetScreenSize(), SizeChanged - Size management
IDriver has a SetScreenSize method
Holds
Read Oct 2
AppModel - Whether the driver operates in FullScreen or Inline mode
IDriver has AppModel
Holds
Read Oct 2
InlinePosition - The terminal cursor position (Point) where the inline region starts.
IDriver has InlinePosition
Holds
Read Oct 2
The ANSI driver's terminal-size detection strategy is controlled by Driver.SizeDetection (<xref:Terminal.Gui.Configuration.DriverSettings>.SizeDetection):
Driver has SizeDetection
Holds
Read Oct 2
In inline mode, OutputBufferImpl.InlineMode = true causes ClearContents() to initialize cells with IsDirty = false.
OutputBufferImpl has InlineMode
Holds
Read Oct 2
In inline mode, OutputBufferImpl.InlineMode = true causes ClearContents() to initialize cells with IsDirty = false.
OutputBufferImpl has a ClearContents method
Holds
Read Oct 2
SetCursorPositionImpl adds App.Screen.Y to all row coordinates so output lands at the correct terminal rows.
AnsiOutput has SetCursorPositionImpl
Holds
Read Oct 2
When IOutput.UseKittyGraphics is true and IDriver.KittyGraphicsSupport.IsSupported is true, output emits Kitty graphics.
IOutput has UseKittyGraphics
Holds
Read Oct 2
When IOutput.UseKittyGraphics is true and IDriver.KittyGraphicsSupport.IsSupported is true, output emits Kitty graphics.
IDriver has KittyGraphicsSupport
Holds
Read Oct 2
Otherwise, when IDriver.SixelSupport.IsSupported is true, output emits Sixel.
IDriver has SixelSupport
Holds
Read Oct 2
DriverImpl.SetKittyGraphicsSupport() enables IOutput.UseKittyGraphics when Kitty support is detected.
DriverImpl has a SetKittyGraphicsSupport method
Holds
Read Oct 2
Drivers implement cursor control through IDriver which delegates to IOutput:
IDriver depends on IOutput
Holds
Read Oct 2
SetCursor(Cursor cursor) - Set cursor position and style atomically
IDriver has a SetCursor method
Holds
Read Oct 2
GetCursor() - Get current cursor state
IDriver has a GetCursor method
Holds
Read Oct 2
SetCursorNeedsUpdate(bool) / GetCursorNeedsUpdate() - Optimization flag for cursor updates
IDriver has a SetCursorNeedsUpdate method
Holds
Read Oct 2
SetCursorNeedsUpdate(bool) / GetCursorNeedsUpdate() - Optimization flag for cursor updates
IDriver has a GetCursorNeedsUpdate method
Holds
Read Oct 2
views use the <xref:Terminal.Gui.ViewBase.View>'s Cursor property.
View has Cursor
Holds
Read Oct 2
KeyDown - Raised for key press and repeat events
IDriver has KeyDown
Holds
Read Oct 2
KeyUp - Raised for key release events (only when the driver supports it — currently the ANSI driver with kitty keyboard protocol)
IDriver has KeyUp
Holds
Read Oct 2
MouseEvent - Raised for mouse input events
IDriver has MouseEvent
Holds
Read Oct 2
**Event type reporting** (flag 2) — press, repeat, and release events via Key.EventType
Key has EventType
Holds
Read Oct 2
**Standalone modifier key events** — pressing Shift, Ctrl, Alt alone generates events with Key.IsModifierOnly == true and Key.ModifierKey identifying the specific modifier (e.g. ModifierKey.LeftShift)
Key has IsModifierOnly
Holds
Read Oct 2
**Standalone modifier key events** — pressing Shift, Ctrl, Alt alone generates events with Key.IsModifierOnly == true and Key.ModifierKey identifying the specific modifier (e.g. ModifierKey.LeftShift)
Key has ModifierKey
Holds
Read Oct 2
Use <xref:Terminal.Gui.App.Application>'s Screen to get screen dimensions
Application has Screen
Holds
Read Oct 2
The driver selection logic in ApplicationImpl.Driver.cs uses the **Driver Registry** to select and instantiate drivers:
ApplicationImpl depends on DriverRegistry
Holds
Read Oct 2
Type ValueChangingEventArgs<T>, Use Case Pre-property-change, Key Properties CurrentValue , NewValue , Handled
ValueChangingEventArgs has CurrentValue
Holds
Read Oct 2
Type ValueChangingEventArgs<T>, Use Case Pre-property-change, Key Properties CurrentValue , NewValue , Handled
ValueChangingEventArgs has NewValue
Holds
Read Oct 2
Type ValueChangingEventArgs<T>, Use Case Pre-property-change, Key Properties CurrentValue , NewValue , Handled
ValueChangingEventArgs has Handled
Holds
Read Oct 2
Type ValueChangedEventArgs<T>, Use Case Post-property-change, Key Properties OldValue , NewValue
ValueChangedEventArgs has OldValue
Holds
Read Oct 2
Type ValueChangedEventArgs<T>, Use Case Post-property-change, Key Properties OldValue , NewValue
ValueChangedEventArgs has NewValue
Holds
Read Oct 2
Type <xref:Terminal.Gui.Input.CommandEventArgs>, Use Case Command execution, Key Properties Context , Handled
CommandEventArgs has Context
Holds
Read Oct 2
Use WithCommand(), WithRouting(), or WithValue() to create modified copies.
CommandContext has a WithCommand method
Holds
Read Oct 2
Use WithCommand(), WithRouting(), or WithValue() to create modified copies.
CommandContext has a WithRouting method
Holds
Read Oct 2
Use WithCommand(), WithRouting(), or WithValue() to create modified copies.
CommandContext has a WithValue method
Holds
Read Oct 2
**Values** — An append-only chain of values accumulated as the command propagates up the view hierarchy.
ICommandContext has Values
Holds
Read Oct 2
**Value** — Convenience accessor for Values[^1] (the most recently appended value), or null if Values is empty.
ICommandContext has Value
Holds
Read Oct 2
Property ICommandContext.Source, Description WeakReference<View> to the view that first invoked the command, Changes During Propagation No (constant)
ICommandContext has Source
Holds
Read Oct 2
Property ICommandContext.Routing, Description <xref:Terminal.Gui.Input.CommandRouting> enum Direct , BubblingUp , DispatchingDown , Bridged, Changes During Propagation Yes (changes at each hop)
ICommandContext has Routing
Holds
Read Oct 2
Property ICommandBinding.Source, Description View where binding was defined, Changes During Propagation No (constant)
ICommandBinding has Source
Holds
Read Oct 2
View <xref:Terminal.Gui.Views.CheckBox>, Value Type CheckState, Meaning Current checked state (Unchecked, Checked, CheckedMark)
CheckBox implements IValue
Holds
Read Oct 2
View <xref:Terminal.Gui.Views.TextField>, Value Type string, Meaning Text content
TextField implements IValue
Holds
Read Oct 2
View DateEditor, Value Type DateTime, Meaning Selected date
DateEditor implements IValue
Holds
Read Oct 2
Many Views have legacy properties (e.g., TextField.Text, CheckBox.CheckedState) that predate the IValue<T> interface.
TextField has Text
Holds
Read Oct 2
**Location:** Terminal.Gui/Time/ITimeProvider.cs
ITimeProvider is in Terminal.Gui.Time
Holds
Read Oct 2
5) If the key is not bound, or the bound command handlers do not return true, OnKeyDownNotHandled() is called.
View has an OnKeyDownNotHandled method
Holds
Read Oct 2
The [Command](~/api/Terminal.Gui.Input.Command.yml) enum lists generic operations that are implemented by views.
Command is an enumeration
Holds
Read Oct 2
For example, Application.GetDefaultKey (Command.Quit), which is bound to Command.Quit in Application.DefaultKeyBindings and results in <xref:Terminal.Gui.App.Application.RequestStop(Terminal.Gui.App.IRunnable)> being called.
Application has a GetDefaultKey method
Holds
Read Oct 2
For example, Application.GetDefaultKey (Command.Quit), which is bound to Command.Quit in Application.DefaultKeyBindings and results in <xref:Terminal.Gui.App.Application.RequestStop(Terminal.Gui.App.IRunnable)> being called.
Application has DefaultKeyBindings
Holds
Read Oct 2
Use Application.Keyboard.KeyBindings to add or modify Application-scoped Key Bindings.
Application has Keyboard
Holds
Read Oct 2
Use Application.Keyboard.KeyBindings to add or modify Application-scoped Key Bindings.
ApplicationKeyboard has KeyBindings
Holds
Read Oct 2
For backward compatibility, Application.KeyBindings also provides access to the same key bindings.
Application has KeyBindings
Holds
Read Oct 2
The most common use-case for HotKey bindings is <xref:Terminal.Gui.ViewBase.View.HotKey>.
View has HotKey
Holds
Read Oct 2
A **Shortcut** is an opinionated (visually & API) <xref:Terminal.Gui.ViewBase.View> for displaying a command, help text, key key press that invokes a [Command](~/api/Terminal.Gui.Input.Command.yml).
Shortcut extends View
Holds
Read Oct 2
The driver raises IDriver.KeyDown for press/repeat events and IDriver.KeyUp for release events.
IDriver has KeyDown
Holds
Read Oct 2
The driver raises IDriver.KeyDown for press/repeat events and IDriver.KeyUp for release events.
IDriver has KeyUp
Holds
Read Oct 2
<xref:Terminal.Gui.App.Application.RaiseKeyDownEvent(Terminal.Gui.Input.Key)> raises Application.KeyDown and then calls NewKeyDownEvent() on all runnable <xref:Terminal.Gui.ViewBase.View>s.
Application has a RaiseKeyDownEvent method
Holds
Read Oct 2
<xref:Terminal.Gui.App.Application.RaiseKeyDownEvent(Terminal.Gui.Input.Key)> raises Application.KeyDown and then calls NewKeyDownEvent() on all runnable <xref:Terminal.Gui.ViewBase.View>s.
Application has KeyDown
Holds
Read Oct 2
<xref:Terminal.Gui.App.Application.RaiseKeyDownEvent(Terminal.Gui.Input.Key)> raises Application.KeyDown and then calls NewKeyDownEvent() on all runnable <xref:Terminal.Gui.ViewBase.View>s.
View has a NewKeyDownEvent method
Holds
Read Oct 2
Application.Keyboard.KeyUp fires for key release events.
ApplicationKeyboard has KeyUp
Holds
Read Oct 2
It routes through the focused view hierarchy via View.NewKeyUpEvent() → View.OnKeyUp() → View.KeyUp.
View has a NewKeyUpEvent method
Holds
Read Oct 2
It routes through the focused view hierarchy via View.NewKeyUpEvent() → View.OnKeyUp() → View.KeyUp.
View has an OnKeyUp method
Holds
Read Oct 2
It routes through the focused view hierarchy via View.NewKeyUpEvent() → View.OnKeyUp() → View.KeyUp.
View has KeyUp
Holds
Read Oct 2
Both events carry a <xref:Terminal.Gui.Input.Key> whose EventType property indicates Press, Repeat, or Release.
Key has EventType
Holds
Read Oct 2
The protocol defines progressive enhancement flags, represented by the <xref:Terminal.Gui.Drivers.KittyKeyboardFlags> enum:
KittyKeyboardFlags is an enumeration
Holds
Read Oct 2
Flag DisambiguateEscapeCodes, Value 1, Description Encodes keys unambiguously as CSI u sequences instead of legacy escape sequences
KittyKeyboardFlags has DisambiguateEscapeCodes
Holds
Read Oct 2
Flag ReportEventTypes, Value 2, Description Reports press, repeat, and release events Enables KeyUp and repeat KeyDown events
KittyKeyboardFlags has ReportEventTypes
Holds
Read Oct 2
Flag ReportAlternateKeys, Value 4, Description Reports shifted and base-layout key codes alongside the primary key code
KittyKeyboardFlags has ReportAlternateKeys
Holds
Read Oct 2
Flag ReportAllKeysAsEscapeCodes, Value 8, Description Reports standalone modifier key events (e.g pressing Shift alone)
KittyKeyboardFlags has ReportAllKeysAsEscapeCodes
Holds
Read Oct 2
If supported, send enable flags (CSI > 1 u form via EscSeqUtils.CSI_EnableKittyKeyboardFlags).
EscSeqUtils has CSI_EnableKittyKeyboardFlags
Holds
Read Oct 2
Store the confirmed flags in IDriver.KittyKeyboardCapabilities.Flags.
IDriver has KittyKeyboardCapabilities
Holds
Read Oct 2
**View.DefaultKeyBindings** - Shared base bindings for all views, covering navigation (cursor keys, Home, End), clipboard (Copy, Cut, Paste), and editing (Undo, Redo, Delete).
View has DefaultKeyBindings
Holds
Read Oct 2
For example, TextField.DefaultKeyBindings adds Emacs-style navigation (Ctrl+B, Ctrl+F), word movement (Ctrl+CursorLeft), and kill commands (Ctrl+K).
TextField has DefaultKeyBindings
Holds
Read Oct 2
View.ViewKeyBindings is applied last (highest priority) after View.DefaultKeyBindings and per-view DefaultKeyBindings.
View has ViewKeyBindings
Holds
Read Oct 2
For debugging keyboard event flow, use the Trace class from the Terminal.Gui.Tracing namespace:
Trace is in Terminal.Gui.Tracing
Holds
Read Oct 2
When enabled, keyboard events are logged via Logging.Trace showing the flow from Driver → Application → View.
Logging has Trace
Holds
Read Oct 2
Component <xref:Terminal.Gui.Views.MenuItem>, Description A <xref:Terminal.Gui.Views.Shortcut>-derived item for use in menus, supports submenus
MenuItem extends Shortcut
Holds
Read Oct 2
Component <xref:Terminal.Gui.Views.Menu>, Description A vertically-oriented <xref:Terminal.Gui.Views.Bar> that contains <xref:Terminal.Gui.Views.MenuItem> items
Menu depends on MenuItem
Holds
Read Oct 2
Component <xref:Terminal.Gui.Views.MenuBarItem>, Description A <xref:Terminal.Gui.Views.MenuItem> that holds a <xref:Terminal.Gui.Views.PopoverMenu> instead of a SubMenu
MenuBarItem extends MenuItem
Holds
Read Oct 2
Component <xref:Terminal.Gui.Views.MenuBarItem>, Description A <xref:Terminal.Gui.Views.MenuItem> that holds a <xref:Terminal.Gui.Views.PopoverMenu> instead of a SubMenu
MenuBarItem depends on PopoverMenu
Holds
Read Oct 2
Component <xref:Terminal.Gui.Views.MenuBar>, Description A horizontal <xref:Terminal.Gui.Views.Menu> that contains <xref:Terminal.Gui.Views.MenuBarItem> items
MenuBar extends Menu
Holds
Read Oct 2
Component <xref:Terminal.Gui.Views.MenuBar>, Description A horizontal <xref:Terminal.Gui.Views.Menu> that contains <xref:Terminal.Gui.Views.MenuBarItem> items
MenuBar depends on MenuBarItem
Holds
Read Oct 2
Component <xref:Terminal.Gui.Views.PopoverMenu>, Description A Popover<Menu, MenuItem> -derived view that hosts cascading menus
PopoverMenu extends Popover
Holds
Read Oct 2
<xref:Terminal.Gui.Views.MenuBarItem> extends <xref:Terminal.Gui.Views.MenuItem> but replaces SubMenu with <xref:Terminal.Gui.Views.PopoverMenu>
MenuBarItem has PopoverMenu
Holds
Read Oct 2
<xref:Terminal.Gui.Views.StatusBar> is a horizontal <xref:Terminal.Gui.Views.Bar> specialized for <xref:Terminal.Gui.Views.Shortcut> items
StatusBar depends on Shortcut
Holds
Read Oct 2
SubMenu property holds nested <xref:Terminal.Gui.Views.Menu> for cascading menus
MenuItem has SubMenu
Holds
Read Oct 2
SubMenu property holds nested <xref:Terminal.Gui.Views.Menu> for cascading menus
MenuItem depends on Menu
Holds
Read Oct 2
TargetView and Command enable command binding to other views
MenuItem has TargetView
Holds
Read Oct 2
TargetView and Command enable command binding to other views
MenuItem has Command
Holds
Read Oct 2
TargetView and Command enable command binding to other views
MenuItem depends on Command
Holds
Read Oct 2
When SubMenu is set, a CommandBridge connects the SubMenu back to this MenuItem (bridging <xref:Terminal.Gui.Input.Command.Activate> and <xref:Terminal.Gui.Input.Command.Accept> commands across the non-containment boundary)
MenuItem depends on CommandBridge
Holds
Read Oct 2
PopoverMenuOpen delegates to PopoverMenu.IsOpen and raises PopoverMenuOpenChanged (relayed from PopoverMenu.IsOpenChanged)
MenuBarItem has PopoverMenuOpen
Holds
Read Oct 2
Overrides OnActivating to toggle PopoverMenuOpen, with a guard that ignores Bridged commands (which are notifications from PopoverMenu internals, not toggle requests)
MenuBarItem has OnActivating
Holds
Read Oct 2
Views call AddCommand to declare command support, then use <xref:Terminal.Gui.Input.MouseBindings> to map mouse events to commands:
View has AddCommand
Holds
Read Oct 2
**Recommended pattern** - Use <xref:Terminal.Gui.ViewBase.View.Activating> event with command context:
View has Activating
Holds
Read Oct 2
**Screen Coordinates** - Relative to terminal (0,0 = top-left) - Mouse.ScreenPosition
Mouse has ScreenPosition
Holds
Read Oct 2
**Viewport Coordinates** - Relative to view's content area (0,0 = top-left of viewport) - Mouse.Position
Mouse has Position
Holds
Read Oct 2
**Entry:** IMouse.RaiseMouseEvent(Mouse mouse)
IMouse has a RaiseMouseEvent method
Holds
Read Oct 2
**Re-show Guard:** When a popover is dismissed, ApplicationMouse records the dismissed popover in DismissedByMousePress and wraps the recursive RaiseMouseEvent call with an _isDismissRecursing flag.
ApplicationMouse has DismissedByMousePress
Holds
Read Oct 2
**Re-show Guard:** When a popover is dismissed, ApplicationMouse records the dismissed popover in DismissedByMousePress and wraps the recursive RaiseMouseEvent call with an _isDismissRecursing flag.
ApplicationMouse has _isDismissRecursing
Holds
Read Oct 2
ApplicationPopover.Show checks this guard and silently returns if the caller is trying to re-show the same popover that was just dismissed.
ApplicationPopover has Show
Holds
Read Oct 2
**Location:** Terminal.Gui/ViewBase/View.Mouse.cs
View is in Terminal.Gui.ViewBase
Holds
Read Oct 2
**Entry:** View.NewMouseEvent(Mouse mouse)
View has a NewMouseEvent method
Holds
Read Oct 2
Include the scroll commands in <xref:Terminal.Gui.ViewBase.View.CommandsToBubbleUp>.
View has CommandsToBubbleUp
Holds
Read Oct 2
Because the child has no handler (AddCommand was not called), DefaultCommandNotBoundHandler runs → <xref:Terminal.Gui.ViewBase.View.TryBubbleUp*> finds the ancestor with the command in CommandsToBubbleUp → invokes it on the ancestor.
View has TryBubbleUp
Holds
Read Oct 2
This is handled internally by <xref:Terminal.Gui.ViewBase.View.TryBubbleUp*> and <xref:Terminal.Gui.ViewBase.View.CommandWillBubbleToAncestor*>.
View has CommandWillBubbleToAncestor
Holds
Read Oct 2
For debugging mouse event flow, use the Trace class from the Terminal.Gui.Tracing namespace:
Trace is in Terminal.Gui.Tracing
Holds
Read Oct 2
When enabled, mouse events are logged via Logging.Trace showing the flow from Driver → Application → View.
Logging has Trace
Holds
Read Oct 2
Trace.EnabledCategories |= TraceCategory.Mouse;
Trace has EnabledCategories
Holds
Read Oct 2
Trace.EnabledCategories |= TraceCategory.Mouse;
TraceCategory has Mouse
Holds
Read Oct 2
At the application level, navigation is encapsulated within the <xref:Terminal.Gui.App.ApplicationNavigation> helper class which is publicly exposed via the Application.Navigation property.
component("ApplicationNavigation"), member("Application", "Navigation", any)
Holds
Read Oct 2
ApplicationNavigation.GetFocused() gets the most-focused <xref:Terminal.Gui.ViewBase.View> in the application.
ApplicationNavigation has a GetFocused method
Holds
Read Oct 2
The ApplicationNavigation.FocusedChanged and ApplicationNavigation.FocusedChanging events are raised when the most-focused <xref:Terminal.Gui.ViewBase.View> in the application is changing or has changed.
ApplicationNavigation has FocusedChanged
Holds
Read Oct 2
The ApplicationNavigation.AdvanceFocus() method causes the focus to advance (forward or backwards) to the next <xref:Terminal.Gui.ViewBase.View> in the application view-hierarchy, using behavior as a filter.
ApplicationNavigation has an AdvanceFocus method
Holds
Read Oct 2
Each main loop iteration, UpdateCursor() is called to:
ApplicationNavigation has an UpdateCursor method
Holds
Read Oct 2
Views control their cursor through the View.Cursor property, not through <xref:Terminal.Gui.App.ApplicationNavigation> directly.
View has Cursor
Holds
Read Oct 2
For example, <xref:Terminal.Gui.ViewBase.View.HasFocusChanging> and <xref:Terminal.Gui.ViewBase.View.HasFocusChanged>.
View has HasFocusChanging
Holds
Read Oct 2
For example, <xref:Terminal.Gui.ViewBase.View.HasFocusChanging> and <xref:Terminal.Gui.ViewBase.View.HasFocusChanged>.
View has HasFocusChanged
Holds
Read Oct 2
For visible and enabled Views, the <xref:Terminal.Gui.ViewBase.View.CanFocus> property is then used to determine whether the <xref:Terminal.Gui.ViewBase.View> is focusable.
View has CanFocus
Holds
Read Oct 2
A visible, enabled, and CanFocus == true view can be focused if the user uses the mouse to clicks on it or if code explicitly calls [SetFocus()](xref:Terminal.Gui.ViewBase.View.SetFocus*).
View has a SetFocus method
Holds
Read Oct 2
Of course, the view itself or some other code can cancel the focus (e.g. by overriding OnHasFocusChanging).
View has OnHasFocusChanging
HoldsPR #4268 · Sep 30
Read Oct 2
For keyboard navigation, the <xref:Terminal.Gui.ViewBase.View.TabStop> property is a filter for which views are focusable from the current most-focused.
View has TabStop
Holds
Read Oct 2
<xref:Terminal.Gui.ViewBase.View.CanFocus> = true
View has HasFocus
Holds
Read Oct 2
The private bool _hasFocus field backs <xref:Terminal.Gui.ViewBase.View.HasFocus> and is the ultimate source of truth whether a <xref:Terminal.Gui.ViewBase.View> has focus or not.
View has a _hasFocus field
Holds
Read Oct 2
[Application.Create()](xref:Terminal.Gui.App.Application.Create*) returns an <xref:Terminal.Gui.App.IApplication> instance
Application has a Create method
Holds
Read Oct 2
[Application.Create()](xref:Terminal.Gui.App.Application.Create*) returns an <xref:Terminal.Gui.App.IApplication> instance
Application depends on IApplication
Holds
Read Oct 2
Every view has an <xref:Terminal.Gui.ViewBase.View.App> property referencing its <xref:Terminal.Gui.App.IApplication> context
View has App
Holds
Read Oct 2
Every view has an <xref:Terminal.Gui.ViewBase.View.App> property referencing its <xref:Terminal.Gui.App.IApplication> context
View depends on IApplication
Holds
Read Oct 2
<xref:Terminal.Gui.App.IApplication.SessionStack> tracks all running sessions as a stack
IApplication has SessionStack
Holds
Read Oct 2
<xref:Terminal.Gui.App.IApplication.TopRunnable> property references the currently active session
IApplication has TopRunnable
Holds
Read Oct 2
[Begin()](xref:Terminal.Gui.App.IApplication.Begin*) and [End()](xref:Terminal.Gui.App.IApplication.End*) methods manage session lifecycle
IApplication has a Begin method
Holds
Read Oct 2
[Begin()](xref:Terminal.Gui.App.IApplication.Begin*) and [End()](xref:Terminal.Gui.App.IApplication.End*) methods manage session lifecycle
IApplication has an End method
Holds
Read Oct 2
[Init()](xref:Terminal.Gui.App.IApplication.Init*) - Returns <xref:Terminal.Gui.App.IApplication> for chaining
IApplication has an Init method
Holds
Read Oct 2
[Run<TRunnable>()](xref:Terminal.Gui.App.IApplication.Run*) - Creates and runs runnable, returns <xref:Terminal.Gui.App.IApplication>
IApplication has Run
Holds
Read Oct 2
[GetResult<T>()](xref:Terminal.Gui.App.IApplication.GetResult*) - Extract typed result after run
IApplication has GetResult
Holds
Read Oct 2
IDriver.SupportsTrueColor detection
IDriver has SupportsTrueColor
Holds
Read Oct 2
Used by [Border](~/api/Terminal.Gui.ViewBase.Border.yml), [Line](~/api/Terminal.Gui.Views.Line.yml), and custom views
Line depends on LineCanvas
Holds
Read Oct 2
Application.Run manages Runnable lifecycle
Application has Run
Holds
Read Oct 2
**[GetContentSize](~/api/Terminal.Gui.ViewBase.yml)** - Returns total content size
View has GetContentSize
Holds
Read Oct 2
**[SetContentSize](~/api/Terminal.Gui.ViewBase.yml)** - Sets scrollable content size
View has SetContentSize
Holds
Read Oct 2
**ScrollVertical/ScrollHorizontal** - Helper methods
View has a ScrollVertical method
Holds
Read Oct 2
**ScrollVertical/ScrollHorizontal** - Helper methods
View has a ScrollHorizontal method
Holds
Read Oct 2
[View.Arrangement](~/api/Terminal.Gui.ViewBase.yml) enables interactive UI:
View has Arrangement
Holds
Read Oct 2
**[ViewArrangement.Movable](~/api/Terminal.Gui.ViewBase.ViewArrangement.yml)** - Drag with mouse or move with keyboard
ViewArrangement has Movable
Holds
Read Oct 2
**[ViewArrangement.Resizable](~/api/Terminal.Gui.ViewBase.ViewArrangement.yml)** - Resize edges with mouse or keyboard
ViewArrangement has Resizable
Holds
Read Oct 2
**[ViewArrangement.Overlapped](~/api/Terminal.Gui.ViewBase.ViewArrangement.yml)** - Z-order management for overlapping views
ViewArrangement has Overlapped
Holds
Read Oct 2
**[CanFocus](~/api/Terminal.Gui.ViewBase.yml)** - Whether view can receive focus (defaults to false in v2)
View has CanFocus
Holds
Read Oct 2
**[TabStop](~/api/Terminal.Gui.ViewBase.yml)** - [TabBehavior](~/api/Terminal.Gui.ViewBase.TabBehavior.yml) enum (TabStop, TabGroup, NoStop)
View has TabStop
Holds
Read Oct 2
Views declare supported commands via [View.AddCommand](~/api/Terminal.Gui.ViewBase.yml)
View has AddCommand
Holds
Read Oct 2
[View.MouseHighlightStates](~/api/Terminal.Gui.ViewBase.yml) - Allows views to provide visual feedback on hover/click.
View has MouseHighlightStates
Holds
Read Oct 2
[View.MouseState](~/api/Terminal.Gui.ViewBase.yml) - Indicates whether the mouse is pressed, hovered, or outside.
View has MouseState
Holds
Read Oct 2
[View.MouseHoldRepeat](~/api/Terminal.Gui.ViewBase.yml) - Enables or disables whether mouse click events will be repeated when the user holds the mouse down
View has MouseHoldRepeat
Holds
Read Oct 2
Theme management (IThemeManager.SwitchTheme)
IThemeManager has SwitchTheme
Holds
Read Oct 2
Logging.Meter provides performance metrics:
Logging has Meter
Holds
Read Oct 2
The IPopoverView interface defines the popover contract: visibility, enabled state, anchor positioning, target reference, and MakeVisible method.
IPopoverView is a contract
Holds
Read Oct 2
The IPopoverView interface defines the popover contract: visibility, enabled state, anchor positioning, target reference, and MakeVisible method.
IPopoverView has a MakeVisible method
Holds
Read Oct 2
Popover<TView, TResult> extends PopoverImpl to host a typed content view and optionally extract a result when the popover closes.
Popover extends PopoverImpl
Holds
Read Oct 2
**Result extraction** — Via ResultExtractor function or automatic IValue<TResult> extraction
Popover has ResultExtractor
Holds
Read Oct 2
**Anchor** — Function-based positioning anchor for MakeVisible / SetPosition
Popover has Anchor
Holds
Read Oct 2
**Anchor** — Function-based positioning anchor for MakeVisible / SetPosition
Popover has a MakeVisible method
Holds
Read Oct 2
**Anchor** — Function-based positioning anchor for MakeVisible / SetPosition
Popover has a SetPosition method
Holds
Read Oct 2
<xref:Terminal.Gui.Views.PopoverMenu> extends Popover<Menu, MenuItem> and is a sophisticated cascading menu implementation used for:
PopoverMenu extends Popover
Holds
Read Oct 2
When a popover is dismissed by a mouse press outside its SubViews, ApplicationMouse.RaiseMouseEvent recurses so the click event can reach views beneath the popover.
ApplicationMouse has RaiseMouseEvent
Holds
Read Oct 2
To prevent this, ApplicationMouse records which popover was just dismissed (DismissedByMousePress) and ApplicationPopover.Show checks this guard — silently returning if the caller is trying to re-show the same popover.
ApplicationMouse has DismissedByMousePress
Holds
Read Oct 2
ApplicationMouse.ResetState is called
ApplicationMouse has ResetState
Holds
Read Oct 2
TableView implements IValue<TableSelection?> to expose the complete selection state as a single value.
TableView implements IValue
Holds
Read Oct 2
Type TableSelection, Description Immutable snapshot SelectedCell (a Point ) + Regions (an IReadOnlyList<TableSelectionRegion> )
TableSelection has SelectedCell
Holds
Read Oct 2
Type TableSelection, Description Immutable snapshot SelectedCell (a Point ) + Regions (an IReadOnlyList<TableSelectionRegion> )
TableSelection has Regions
Holds
Read Oct 2
Type TableSelectionRegion, Description A contiguous rectangular selection Has Origin , Rectangle , and IsExtended
TableSelectionRegion has Origin
Holds
Read Oct 2
Type TableSelectionRegion, Description A contiguous rectangular selection Has Origin , Rectangle , and IsExtended
TableSelectionRegion has Rectangle
Holds
Read Oct 2
Type TableSelectionRegion, Description A contiguous rectangular selection Has Origin , Rectangle , and IsExtended
TableSelectionRegion has IsExtended
Holds
Read Oct 2
Move the cursor programmatically with SetSelection (col, row, extend).
TableView has a SetSelection method
Holds
Read Oct 2
All cells in the cursor's row are reported as selected by GetAllSelectedCells () and IsSelected ().
TableView has a GetAllSelectedCells method
Holds
Read Oct 2
All cells in the cursor's row are reported as selected by GetAllSelectedCells () and IsSelected ().
TableView has an IsSelected method
Holds
Read Oct 2
TableView uses the standard KeyBindings and MouseBindings infrastructure.
TableView depends on MouseBindings
Holds
Read Oct 2
Override DefaultKeyBindings (static) or instance-level bindings.
TableView has DefaultKeyBindings
Holds
Read Oct 2
Horizontal and vertical scrolling is handled via ColumnOffset and RowOffset (backed by Viewport).
TableView has ColumnOffset
Holds
Read Oct 2
Horizontal and vertical scrolling is handled via ColumnOffset and RowOffset (backed by Viewport).
TableView has RowOffset
Holds
Read Oct 2
**Columns** — rendered from ColumnOffset right, each column sized by content width (clamped by MinCellWidth / MaxCellWidth and per-column ColumnStyle)
TableView has MinCellWidth
Holds
Read Oct 2
**Columns** — rendered from ColumnOffset right, each column sized by content width (clamped by MinCellWidth / MaxCellWidth and per-column ColumnStyle)
TableView has MaxCellWidth
Holds
Read Oct 2
Property ShowHeaders, Default true, Description Show column header row
TableStyle has ShowHeaders
Holds
Read Oct 2
Property ShowHorizontalHeaderOverline, Default true, Description Line above headers
TableStyle has ShowHorizontalHeaderOverline
Holds
Read Oct 2
Property ShowHorizontalHeaderUnderline, Default true, Description Line below headers
TableStyle has ShowHorizontalHeaderUnderline
Holds
Read Oct 2
Property ShowVerticalCellLines, Default true, Description Vertical separators between cells
TableStyle has ShowVerticalCellLines
Holds
Read Oct 2
Property ShowVerticalHeaderLines, Default true, Description Vertical separators between headers
TableStyle has ShowVerticalHeaderLines
Holds
Read Oct 2
Property ShowHorizontalBottomLine, Default false, Description Line below last row
TableStyle has ShowHorizontalBottomLine
Holds
Read Oct 2
Property AlwaysShowHeaders, Default false, Description Lock headers when scrolling
TableStyle has AlwaysShowHeaders
Holds
Read Oct 2
Property ExpandLastColumn, Default true, Description Fill remaining space with last column
TableStyle has ExpandLastColumn
Holds
Read Oct 2
Property SmoothHorizontalScrolling, Default true, Description Minimal horizontal scroll increments
TableStyle has SmoothHorizontalScrolling
Holds
Read Oct 2
Property InvertSelectedCellFirstCharacter, Default false, Description Show cursor character inversion
TableStyle has InvertSelectedCellFirstCharacter
Holds
Read Oct 2
Property RowColorGetter, Default null, Description Custom row coloring delegate
TableStyle has RowColorGetter
Holds
Read Oct 2
After programmatic cursor changes, call EnsureCursorIsVisible () to scroll the viewport so the cursor cell is on screen.
TableView has an EnsureCursorIsVisible method
Holds
Read Oct 2
Use TableStyle.ColumnStyles to customize individual columns:
TableStyle has ColumnStyles
Holds
Read Oct 2
Property Alignment, Description Default text alignment for the column
ColumnStyle has Alignment
Holds
Read Oct 2
Property AlignmentGetter, Description Per-cell alignment delegate (overrides Alignment )
ColumnStyle has AlignmentGetter
Holds
Read Oct 2
Property ColorGetter, Description Per-cell Scheme delegate
ColumnStyle has ColorGetter
Holds
Read Oct 2
Property RepresentationGetter, Description Custom object → string conversion
ColumnStyle has RepresentationGetter
Holds
Read Oct 2
Property Format, Description IFormattable.ToString format string
ColumnStyle has Format
Holds
Read Oct 2
Property MaxWidth, Description Maximum column width in characters
ColumnStyle has MaxWidth
Holds
Read Oct 2
Property MinWidth, Description Minimum column width in characters
ColumnStyle has MinWidth
Holds
Read Oct 2
Property MinAcceptableWidth, Description Flexible lower bound for column width
ColumnStyle has MinAcceptableWidth
Holds
Read Oct 2
Property Visible, Description Hide the column entirely
ColumnStyle has Visible
Holds
Read Oct 2
TreeTableSource<T> combines TreeView<T> expand/collapse with TableView column rendering:
TreeTableSource depends on TreeView
Holds
Read Oct 2
TreeTableSource<T> combines TreeView<T> expand/collapse with TableView column rendering:
TreeTableSource depends on TableView
Holds
Read Oct 2
<xref:Terminal.Gui.ViewBase.View.HasFocus> - Whether the View currently has focus
View has HasFocus
Holds
Read Oct 2
Each View has a SuperView property that references its container
View has SuperView
Holds
Read Oct 2
Call SetContentSize() with a size larger than the Viewport
View has a SetContentSize method
Holds
Read Oct 2
**[Padding](<xref:Terminal.Gui.ViewBase.Padding>)** - Spacing inside the Border, outside the Viewport Each adornment has a [Thickness](<xref:Terminal.Gui.Drawing.Thickness>) that defines the width of each side (Top, Right, Bottom, Left).
Margin has Thickness
Holds
Read Oct 2
**[Padding](<xref:Terminal.Gui.ViewBase.Padding>)** - Spacing inside the Border, outside the Viewport Each adornment has a [Thickness](<xref:Terminal.Gui.Drawing.Thickness>) that defines the width of each side (Top, Right, Bottom, Left).
Border has Thickness
Holds
Read Oct 2
**[Padding](<xref:Terminal.Gui.ViewBase.Padding>)** - Spacing inside the Border, outside the Viewport Each adornment has a [Thickness](<xref:Terminal.Gui.Drawing.Thickness>) that defines the width of each side (Top, Right, Bottom, Left).
Padding has Thickness
Holds
Read Oct 2
**BeginInit()** - Signals initialization is starting
View has a BeginInit method
Holds
Read Oct 2
**EndInit()** - Signals initialization is complete;
View has an EndInit method
Holds
Read Oct 2
**IsInitialized** - Property indicating if initialization is complete
View has IsInitialized
Holds
Read Oct 2
During initialization, App is set to reference the application context, enabling views to access application services like the driver and current session.
View has App
Holds
Read Oct 2
Call Dispose() to clean up resources
View has a Dispose method
Holds
Read Oct 2
<xref:Terminal.Gui.Input.KeyBindings> - Maps keys to Commands
View has KeyBindings
Holds
Read Oct 2
<xref:Terminal.Gui.ViewBase.View.HotKey> - The hot key for the View
View has HotKey
Holds
Read Oct 2
HotKeySpecifier - Character used to denote hot keys in text (default: '_')
View has HotKeySpecifier
Holds
Read Oct 2
<xref:Terminal.Gui.Input.MouseBindings> - Maps mouse events to Commands
View has MouseBindings
Holds
Read Oct 2
MouseHoldRepeat - Enables continuous button press events
View has MouseHoldRepeat
Holds
Read Oct 2
X - Horizontal position using [Pos](~/api/Terminal.Gui.ViewBase.Pos.yml)
View has X
Holds
Read Oct 2
Y - Vertical position using [Pos](~/api/Terminal.Gui.ViewBase.Pos.yml)
View has Y
Holds
Read Oct 2
Width - Width using [Dim](~/api/Terminal.Gui.ViewBase.Dim.yml)
View has Width
Holds
Read Oct 2
Height - Height using [Dim](~/api/Terminal.Gui.ViewBase.Dim.yml)
View has Height
Holds
Read Oct 2
Dim.Auto() - Automatic sizing based on content
Dim has an Auto method
Holds
Read Oct 2
Pos.AnchorEnd() - Anchor to right/bottom edges
Pos has an AnchorEnd method
Holds
Read Oct 2
[Pos.Align](~/api/Terminal.Gui.ViewBase.Pos.yml) - Align views relative to each other
Pos has Align
Holds
Read Oct 2
[Pos.Center](~/api/Terminal.Gui.ViewBase.Pos.yml) - Center within SuperView
Pos has Center
Holds
Read Oct 2
[Dim.Fill](~/api/Terminal.Gui.ViewBase.Dim.yml) - Fill available space
Dim has Fill
Holds
Read Oct 2
Arrangement - Controls if View is movable/resizable
View has Arrangement
Holds
Read Oct 2
[View.SetAttribute](~/api/Terminal.Gui.ViewBase.View.yml) - Sets the attribute for subsequent drawing
View has SetAttribute
Holds
Read Oct 2
[View.SetAttributeForRole](~/api/Terminal.Gui.ViewBase.View.yml) - Sets attribute based on [VisualRole](~/api/Terminal.Gui.Drawing.VisualRole.yml)
View has SetAttributeForRole
Holds
Read Oct 2
[View.Draw](~/api/Terminal.Gui.ViewBase.View.yml) - Main drawing method
View has a Draw method
Holds
Read Oct 2
[View.AddRune](~/api/Terminal.Gui.ViewBase.View.yml) - Draws a single Rune
View has AddRune
Holds
Read Oct 2
[View.AddStr](~/api/Terminal.Gui.ViewBase.View.yml) - Draws a string
View has AddStr
Holds
Read Oct 2
[View.Move](~/api/Terminal.Gui.ViewBase.View.yml) - Positions the **Draw Cursor** (internal rendering position, NOT the visible Terminal Cursor)
View has Move
Holds
Read Oct 2
> To position the Terminal Cursor, use the View.Cursor property.
View has Cursor
Holds
Read Oct 2
[View.SetNeedsDraw](~/api/Terminal.Gui.ViewBase.View.yml) - Marks View as needing redraw
View has SetNeedsDraw
Holds
Read Oct 2
[View.NeedsDraw](~/api/Terminal.Gui.ViewBase.View.yml) - Property indicating if View needs redraw
View has NeedsDraw
Holds
Read Oct 2
<xref:Terminal.Gui.ViewBase.View.CanFocus> - Whether the View can receive keyboard focus
View has CanFocus
Holds
Read Oct 2
<xref:Terminal.Gui.ViewBase.View.TabStop> - [TabBehavior](~/api/Terminal.Gui.ViewBase.TabBehavior.yml) for tab navigation
View has TabStop
Holds
Read Oct 2
[View.SetFocus](~/api/Terminal.Gui.ViewBase.View.yml) - Gives focus to the View
View has SetFocus
Holds
Read Oct 2
[View.OnKeyDown](~/api/Terminal.Gui.ViewBase.View.yml) virtual method
View has an OnKeyDown method
Holds
Read Oct 2
Command handlers (registered via [View.AddCommand](~/api/Terminal.Gui.ViewBase.View.yml))
View has AddCommand
Holds
Read Oct 2
[View.OnMouseEvent](~/api/Terminal.Gui.ViewBase.View.yml) virtual method
View has an OnMouseEvent method
Holds
Read Oct 2
[View.AdvanceFocus](~/api/Terminal.Gui.ViewBase.View.yml) - Moves focus to next/previous View
View has AdvanceFocus
Holds
Read Oct 2
View.Diagnostics - [ViewDiagnosticFlags](~/api/Terminal.Gui.ViewBase.ViewDiagnosticFlags.yml) for debugging:
View has Diagnostics
Holds
Read Oct 2
Enabled - Whether the View is enabled
View has Enabled
Holds
Read Oct 2
Visible - Whether the View is visible
View has Visible
Holds
Read Oct 2
They are configured via <xref:Terminal.Gui.ViewBase.View.ShadowStyle>:
View has ShadowStyle
Holds
Read Oct 2
The base-class for <xref:Terminal.Gui.Views.OpenDialog> and <xref:Terminal.Gui.Views.SaveDialog>
OpenDialog extends FileDialog
Holds
Read Oct 2
The base-class for <xref:Terminal.Gui.Views.OpenDialog> and <xref:Terminal.Gui.Views.SaveDialog>
SaveDialog extends FileDialog
Holds
Read Oct 2
Abstract base for linear range views (<xref:Terminal.Gui.Views.LinearSelector%601>, <xref:Terminal.Gui.Views.LinearMultiSelector%601>, <xref:Terminal.Gui.Views.LinearRange%601>) that present a list of typed options navigable by keyboard or mouse, and expose the current selection as a strongly-typed value via <xref:Terminal.Gui.ViewBase.IValue%601>.
LinearSelector extends LinearRangeViewBase
Holds
Read Oct 2
Abstract base for linear range views (<xref:Terminal.Gui.Views.LinearSelector%601>, <xref:Terminal.Gui.Views.LinearMultiSelector%601>, <xref:Terminal.Gui.Views.LinearRange%601>) that present a list of typed options navigable by keyboard or mouse, and expose the current selection as a strongly-typed value via <xref:Terminal.Gui.ViewBase.IValue%601>.
LinearMultiSelector extends LinearRangeViewBase
Holds
Read Oct 2
Abstract base for linear range views (<xref:Terminal.Gui.Views.LinearSelector%601>, <xref:Terminal.Gui.Views.LinearMultiSelector%601>, <xref:Terminal.Gui.Views.LinearRange%601>) that present a list of typed options navigable by keyboard or mouse, and expose the current selection as a strongly-typed value via <xref:Terminal.Gui.ViewBase.IValue%601>.
LinearRange extends LinearRangeViewBase
Holds
Read Oct 2
A read-only view that renders a single Markdown table with box-drawing borders via <xref:Terminal.Gui.Drawing.LineCanvas> and styled header/body text with inline Markdown formatting.
MarkdownTable depends on LineCanvas
Holds
Read Oct 2
A vertically-oriented <xref:Terminal.Gui.Views.Bar> that contains <xref:Terminal.Gui.Views.MenuItem> items, supporting cascading sub-menus, selection tracking, and the <xref:Terminal.Gui.ViewBase.IValue%601> pattern.
Menu depends on MenuItem
Holds
Read Oct 2
A horizontal <xref:Terminal.Gui.Views.Menu> that contains <xref:Terminal.Gui.Views.MenuBarItem> items.
MenuBar depends on MenuBarItem
Holds
Read Oct 2
A <xref:Terminal.Gui.Views.MenuItem>-derived item for use in a <xref:Terminal.Gui.Views.MenuBar>.
MenuBarItem extends MenuItem
Holds
Read Oct 2
A <xref:Terminal.Gui.Views.Shortcut>-derived item for use in a <xref:Terminal.Gui.Views.Menu>.
MenuItem extends Shortcut
Holds
Read Oct 2
A <xref:Terminal.Gui.App.IPopover>-derived view that provides a cascading menu.
PopoverMenu implements IPopover
Holds
Read Oct 2
A dialog that wraps any <xref:Terminal.Gui.ViewBase.View> with Ok/Cancel buttons, extracting a typed result when the user accepts.
Prompt depends on View
Holds
Read Oct 2
Base implementation of <xref:Terminal.Gui.App.IRunnable> for views that can be run as blocking sessions without returning a result.
Runnable implements IRunnable
Holds
Read Oct 2
Wraps any <xref:Terminal.Gui.ViewBase.View> to make it runnable with a typed result without adding dialog buttons.
RunnableWrapper depends on View
Holds
Read Oct 2
Between the buttons is a <xref:Terminal.Gui.Views.ScrollSlider> that can be dragged to control the position of the visible content.
ScrollBar depends on ScrollSlider
Holds
Read Oct 2
A <xref:Terminal.Gui.Views.Button> used to scroll content forward or backward.
ScrollButton extends Button
Holds
Read Oct 2
The button displays an arrow glyph determined by the combination of <xref:Terminal.Gui.Views.ScrollButton.Direction> and <xref:Terminal.Gui.Views.ScrollButton.Orientation>:
ScrollButton has Direction
Holds
Read Oct 2
The button displays an arrow glyph determined by the combination of <xref:Terminal.Gui.Views.ScrollButton.Direction> and <xref:Terminal.Gui.Views.ScrollButton.Orientation>:
ScrollButton has Orientation
Holds
Read Oct 2
The abstract base class for <xref:Terminal.Gui.Views.OptionSelector%601> and <xref:Terminal.Gui.Views.FlagSelector%601>.
OptionSelector extends SelectorBase
Holds
Read Oct 2
The abstract base class for <xref:Terminal.Gui.Views.OptionSelector%601> and <xref:Terminal.Gui.Views.FlagSelector%601>.
FlagSelector extends SelectorBase
Holds
Read Oct 2
A status bar is a <xref:Terminal.Gui.ViewBase.View> that snaps to the bottom of the Viewport displaying set of <xref:Terminal.Gui.Views.Shortcut>s.
StatusBar depends on Shortcut
Holds
Read Oct 2
Displays and enables infinite scrolling through tabular data based on a <xref:Terminal.Gui.Views.ITableSource>.
TableView depends on ITableSource
Holds
Read Oct 2
A tabbed container <xref:Terminal.Gui.ViewBase.View> that renders each SubView as a selectable tab with a header drawn by <xref:Terminal.Gui.ViewBase.Border>.
Tabs depends on Border
Holds
Read Oct 2
Masked text editor that validates input through a <xref:Terminal.Gui.Views.ITextValidateProvider>.
TextValidateField depends on ITextValidateProvider
Holds
Read Oct 2
Provides time editing functionality using <xref:Terminal.Gui.Views.TextValidateField> with culture-aware formatting.
TimeEditor depends on TextValidateField
Holds
Read Oct 2
Branch objects are dynamically determined when expanded using a user defined <xref:Terminal.Gui.Views.ITreeBuilder%601>.
TreeView depends on ITreeBuilder
Holds
Read Oct 2
Can contain arbitrary <xref:Terminal.Gui.ViewBase.View>s and display help text in the right <xref:Terminal.Gui.ViewBase.Padding>.
WizardStep depends on View
Holds
Read Oct 2
Can contain arbitrary <xref:Terminal.Gui.ViewBase.View>s and display help text in the right <xref:Terminal.Gui.ViewBase.Padding>.
WizardStep depends on Padding
Holds
400 rules from 19 docs

See these where the change is. The browser extension puts a pull request's doc findings, and a diagram of what it changed, on the GitHub page itself, so the code and what your docs say about it are side by side.