Merge pull request #2123 from tznind/cursor-option

Fixes #2120. TreeView: Hide cursor in single select mode by default, add cursor toggle to TreeViewFileSystem Scenario
This commit is contained in:
Tig
2022-10-22 16:15:00 -07:00
committed by GitHub
2 changed files with 27 additions and 7 deletions

View File

@@ -219,19 +219,23 @@ namespace Terminal.Gui {
/// <value></value>
public AspectGetterDelegate<T> AspectGetter { get; set; } = (o) => o.ToString () ?? "";
CursorVisibility desiredCursorVisibility = CursorVisibility.Default;
CursorVisibility desiredCursorVisibility = CursorVisibility.Invisible;
/// <summary>
/// Get / Set the wished cursor when the tree is focused
/// Get / Set the wished cursor when the tree is focused.
/// Only applies when <see cref="MultiSelect"/> is true.
/// Defaults to <see cref="CursorVisibility.Invisible"/>
/// </summary>
public CursorVisibility DesiredCursorVisibility {
get => desiredCursorVisibility;
get {
return MultiSelect ? desiredCursorVisibility : CursorVisibility.Invisible;
}
set {
if (desiredCursorVisibility != value && HasFocus) {
Application.Driver.SetCursorVisibility (value);
}
desiredCursorVisibility = value;
if (desiredCursorVisibility != value && HasFocus) {
Application.Driver.SetCursorVisibility (DesiredCursorVisibility);
}
}
}

View File

@@ -25,6 +25,8 @@ namespace UICatalog.Scenarios {
private MenuItem miFullPaths;
private MenuItem miLeaveLastRow;
private MenuItem miCustomColors;
private MenuItem miCursor;
private MenuItem miMultiSelect;
private Terminal.Gui.Attribute green;
private Terminal.Gui.Attribute red;
@@ -54,6 +56,8 @@ namespace UICatalog.Scenarios {
miFullPaths = new MenuItem ("_FullPaths", "", () => SetFullName()){Checked = false, CheckType = MenuItemCheckStyle.Checked},
miLeaveLastRow = new MenuItem ("_LeaveLastRow", "", () => SetLeaveLastRow()){Checked = true, CheckType = MenuItemCheckStyle.Checked},
miCustomColors = new MenuItem ("C_ustomColors", "", () => SetCustomColors()){Checked = false, CheckType = MenuItemCheckStyle.Checked},
miCursor = new MenuItem ("Curs_or (MultiSelect only)", "", () => SetCursor()){Checked = false, CheckType = MenuItemCheckStyle.Checked},
miMultiSelect = new MenuItem ("_MultiSelect", "", () => SetMultiSelect()){Checked = true, CheckType = MenuItemCheckStyle.Checked},
}),
});
Top.Add (menu);
@@ -269,6 +273,18 @@ namespace UICatalog.Scenarios {
miLeaveLastRow.Checked = !miLeaveLastRow.Checked;
treeViewFiles.Style.LeaveLastRow = miLeaveLastRow.Checked;
}
private void SetCursor()
{
miCursor.Checked = !miCursor.Checked;
treeViewFiles.DesiredCursorVisibility = miCursor.Checked ? CursorVisibility.Default : CursorVisibility.Invisible;
}
private void SetMultiSelect()
{
miMultiSelect.Checked = !miMultiSelect.Checked;
treeViewFiles.MultiSelect = miMultiSelect.Checked;
}
private void SetCustomColors()
{
var yellow = new ColorScheme