diff --git a/Terminal.Gui/ConsoleDrivers/CursesDriver/CursesDriver.cs b/Terminal.Gui/ConsoleDrivers/CursesDriver/CursesDriver.cs index c90ad0df4..4353e8909 100644 --- a/Terminal.Gui/ConsoleDrivers/CursesDriver/CursesDriver.cs +++ b/Terminal.Gui/ConsoleDrivers/CursesDriver/CursesDriver.cs @@ -700,10 +700,23 @@ namespace Terminal.Gui { // We are setting Invisible as default so we could ignore XTerm DECSUSR setting // switch (Curses.curs_set (0)) { - case 0: currentCursorVisibility = initialCursorVisibility = CursorVisibility.Invisible; break; - case 1: currentCursorVisibility = initialCursorVisibility = CursorVisibility.Underline; Curses.curs_set (1); break; - case 2: currentCursorVisibility = initialCursorVisibility = CursorVisibility.Box; Curses.curs_set (2); break; - default: currentCursorVisibility = initialCursorVisibility = null; break; + case 0: + currentCursorVisibility = initialCursorVisibility = CursorVisibility.Invisible; + break; + + case 1: + currentCursorVisibility = initialCursorVisibility = CursorVisibility.Underline; + Curses.curs_set (1); + break; + + case 2: + currentCursorVisibility = initialCursorVisibility = CursorVisibility.Box; + Curses.curs_set (2); + break; + + default: + currentCursorVisibility = initialCursorVisibility = null; + break; } Curses.raw (); @@ -891,9 +904,8 @@ namespace Terminal.Gui { { visibility = CursorVisibility.Invisible; - if (!currentCursorVisibility.HasValue) { + if (!currentCursorVisibility.HasValue) return false; - } visibility = currentCursorVisibility.Value; @@ -909,8 +921,7 @@ namespace Terminal.Gui { Curses.curs_set (((int) visibility >> 16) & 0x000000FF); - if (visibility != CursorVisibility.Invisible) - { + if (visibility != CursorVisibility.Invisible) { Console.Out.Write ("\x1b[{0} q", ((int) visibility >> 24) & 0xFF); Console.Out.Flush (); } diff --git a/Terminal.Gui/ConsoleDrivers/WindowsDriver.cs b/Terminal.Gui/ConsoleDrivers/WindowsDriver.cs index 176df252a..63f21ab5c 100644 --- a/Terminal.Gui/ConsoleDrivers/WindowsDriver.cs +++ b/Terminal.Gui/ConsoleDrivers/WindowsDriver.cs @@ -117,21 +117,21 @@ namespace Terminal.Gui { public bool GetCursorVisibility (out CursorVisibility visibility) { if (!GetConsoleCursorInfo (ScreenBuffer, out ConsoleCursorInfo info)) { - var err = Marshal.GetLastWin32Error (); - if (err != 0) { throw new System.ComponentModel.Win32Exception (err); - } - + } visibility = Gui.CursorVisibility.Default; return false; } - if (!info.bVisible) visibility = CursorVisibility.Invisible; - else if (info.dwSize > 50) visibility = CursorVisibility.Box; - else visibility = CursorVisibility.Underline; + if (!info.bVisible) + visibility = CursorVisibility.Invisible; + else if (info.dwSize > 50) + visibility = CursorVisibility.Box; + else + visibility = CursorVisibility.Underline; return true; } diff --git a/Terminal.Gui/Views/HexView.cs b/Terminal.Gui/Views/HexView.cs index 898364376..8fb2111e3 100644 --- a/Terminal.Gui/Views/HexView.cs +++ b/Terminal.Gui/Views/HexView.cs @@ -396,21 +396,21 @@ namespace Terminal.Gui { edits = new SortedDictionary (); } - private CursorVisibility wishedCursorVisibility = CursorVisibility.BoxFix; + private CursorVisibility desiredCursorVisibility = CursorVisibility.Default; /// /// Get / Set the wished cursor when the field is focused /// - public CursorVisibility WishedCursorVisibility + public CursorVisibility DesiredCursorVisibility { - get => wishedCursorVisibility; + get => desiredCursorVisibility; set { - if (wishedCursorVisibility != value && HasFocus) + if (desiredCursorVisibility != value && HasFocus) { Application.Driver.SetCursorVisibility (value); } - wishedCursorVisibility = value; + desiredCursorVisibility = value; } } } diff --git a/Terminal.Gui/Views/TextField.cs b/Terminal.Gui/Views/TextField.cs index c963b384a..222a423ae 100644 --- a/Terminal.Gui/Views/TextField.cs +++ b/Terminal.Gui/Views/TextField.cs @@ -868,28 +868,28 @@ namespace Terminal.Gui { } - private CursorVisibility wishedCursorVisibility = CursorVisibility.BoxFix; + private CursorVisibility desiredCursorVisibility = CursorVisibility.Default; /// /// Get / Set the wished cursor when the field is focused /// - public CursorVisibility WishedCursorVisibility + public CursorVisibility DesiredCursorVisibility { - get => wishedCursorVisibility; + get => desiredCursorVisibility; set { - if (wishedCursorVisibility != value && HasFocus) + if (desiredCursorVisibility != value && HasFocus) { Application.Driver.SetCursorVisibility (value); } - wishedCursorVisibility = value; + desiredCursorVisibility = value; } } /// public override bool OnEnter (View view) { - Application.Driver.SetCursorVisibility (WishedCursorVisibility); + Application.Driver.SetCursorVisibility (DesiredCursorVisibility); return base.OnEnter (view); } diff --git a/Terminal.Gui/Views/TextView.cs b/Terminal.Gui/Views/TextView.cs index 8716651df..8397b2b29 100644 --- a/Terminal.Gui/Views/TextView.cs +++ b/Terminal.Gui/Views/TextView.cs @@ -599,21 +599,21 @@ namespace Terminal.Gui { } } - private CursorVisibility wishedCursorVisibility = CursorVisibility.BoxFix; + private CursorVisibility desiredCursorVisibility = CursorVisibility.Default; /// /// Get / Set the wished cursor when the field is focused /// - public CursorVisibility WishedCursorVisibility + public CursorVisibility DesiredCursorVisibility { - get => wishedCursorVisibility; + get => desiredCursorVisibility; set { - if (wishedCursorVisibility != value && HasFocus) + if (desiredCursorVisibility != value && HasFocus) { Application.Driver.SetCursorVisibility (value); } - wishedCursorVisibility = value; + desiredCursorVisibility = value; } } @@ -621,7 +621,7 @@ namespace Terminal.Gui { public override bool OnEnter (View view) { //TODO: Improve it by handling read only mode of the text field - Application.Driver.SetCursorVisibility (WishedCursorVisibility); + Application.Driver.SetCursorVisibility (DesiredCursorVisibility); return base.OnEnter (view); } diff --git a/UICatalog/Scenarios/Editor.cs b/UICatalog/Scenarios/Editor.cs index 97bca848d..cce1180d0 100644 --- a/UICatalog/Scenarios/Editor.cs +++ b/UICatalog/Scenarios/Editor.cs @@ -24,43 +24,34 @@ namespace UICatalog { Top = Application.Top; } - List menuBarItems = new List ( - new MenuBarItem [] - { - new MenuBarItem ("_File", new MenuItem [] { - new MenuItem ("_New", "", () => New()), - new MenuItem ("_Open", "", () => Open()), - new MenuItem ("_Save", "", () => Save()), - null, - new MenuItem ("_Quit", "", () => Quit()), - }), - new MenuBarItem ("_Edit", new MenuItem [] { - new MenuItem ("_Copy", "", () => Copy()), - new MenuItem ("C_ut", "", () => Cut()), - new MenuItem ("_Paste", "", () => Paste()) - }), - new MenuBarItem ("_ScrollBarView", CreateKeepChecked ()) - } - ); - - if (!Application.UseSystemConsole) { - menuBarItems.Add (new MenuBarItem ("_Cursor", new MenuItem [] { - new MenuItem ("_Invisible", "", () => SetCursor(CursorVisibility.Invisible)), - new MenuItem ("_Box", "", () => SetCursor(CursorVisibility.Box)), - new MenuItem ("_Underline", "", () => SetCursor(CursorVisibility.Underline)), - new MenuItem ("", "", () => {}, () => { return false; }), - new MenuItem ("xTerm :", "", () => {}, () => { return false; }), - new MenuItem ("", "", () => {}, () => { return false; }), - new MenuItem (" _Default", "", () => SetCursor(CursorVisibility.Default)), - new MenuItem (" _Vertical", "", () => SetCursor(CursorVisibility.Vertical)), - new MenuItem (" V_ertical Fix", "", () => SetCursor(CursorVisibility.VerticalFix)), - new MenuItem (" B_ox Fix", "", () => SetCursor(CursorVisibility.BoxFix)), - new MenuItem (" U_nderline Fix","", () => SetCursor(CursorVisibility.UnderlineFix)) - })); - } - - var menu = new MenuBar (menuBarItems.ToArray()); - + var menu = new MenuBar (new MenuBarItem [] { + new MenuBarItem ("_File", new MenuItem [] { + new MenuItem ("_New", "", () => New()), + new MenuItem ("_Open", "", () => Open()), + new MenuItem ("_Save", "", () => Save()), + null, + new MenuItem ("_Quit", "", () => Quit()), + }), + new MenuBarItem ("_Edit", new MenuItem [] { + new MenuItem ("_Copy", "", () => Copy()), + new MenuItem ("C_ut", "", () => Cut()), + new MenuItem ("_Paste", "", () => Paste()) + }), + new MenuBarItem ("_ScrollBarView", CreateKeepChecked ()), + new MenuBarItem ("_Cursor", new MenuItem [] { + new MenuItem ("_Invisible", "", () => SetCursor(CursorVisibility.Invisible)), + new MenuItem ("_Box", "", () => SetCursor(CursorVisibility.Box)), + new MenuItem ("_Underline", "", () => SetCursor(CursorVisibility.Underline)), + new MenuItem ("", "", () => {}, () => { return false; }), + new MenuItem ("xTerm :", "", () => {}, () => { return false; }), + new MenuItem ("", "", () => {}, () => { return false; }), + new MenuItem (" _Default", "", () => SetCursor(CursorVisibility.Default)), + new MenuItem (" _Vertical", "", () => SetCursor(CursorVisibility.Vertical)), + new MenuItem (" V_ertical Fix", "", () => SetCursor(CursorVisibility.VerticalFix)), + new MenuItem (" B_ox Fix", "", () => SetCursor(CursorVisibility.BoxFix)), + new MenuItem (" U_nderline Fix","", () => SetCursor(CursorVisibility.UnderlineFix)) + }) + }); Top.Add (menu); var statusBar = new StatusBar (new StatusItem [] { @@ -166,7 +157,7 @@ namespace UICatalog { private void SetCursor (CursorVisibility visibility) { - _textView.WishedCursorVisibility = visibility; + _textView.DesiredCursorVisibility = visibility; } private void Open ()