|
@@ -536,6 +536,8 @@ internal class CursesDriver : ConsoleDriver
|
|
return true;
|
|
return true;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ private EscSeqUtils.DECSCUSR_Style? _currentDecscusrStyle;
|
|
|
|
+
|
|
/// <inheritdoc/>
|
|
/// <inheritdoc/>
|
|
public override bool SetCursorVisibility (CursorVisibility visibility)
|
|
public override bool SetCursorVisibility (CursorVisibility visibility)
|
|
{
|
|
{
|
|
@@ -547,17 +549,19 @@ internal class CursesDriver : ConsoleDriver
|
|
if (!RunningUnitTests)
|
|
if (!RunningUnitTests)
|
|
{
|
|
{
|
|
Curses.curs_set (((int)visibility >> 16) & 0x000000FF);
|
|
Curses.curs_set (((int)visibility >> 16) & 0x000000FF);
|
|
|
|
+ Curses.leaveok (_window!.Handle, !Force16Colors);
|
|
}
|
|
}
|
|
|
|
|
|
if (visibility != CursorVisibility.Invisible)
|
|
if (visibility != CursorVisibility.Invisible)
|
|
{
|
|
{
|
|
- _mainLoopDriver?.WriteRaw (
|
|
|
|
- EscSeqUtils.CSI_SetCursorStyle (
|
|
|
|
- (EscSeqUtils.DECSCUSR_Style)
|
|
|
|
- (((int)visibility >> 24)
|
|
|
|
- & 0xFF)
|
|
|
|
- )
|
|
|
|
- );
|
|
|
|
|
|
+ if (_currentDecscusrStyle is null || _currentDecscusrStyle != (EscSeqUtils.DECSCUSR_Style)(((int)visibility >> 24) & 0xFF))
|
|
|
|
+ {
|
|
|
|
+ _currentDecscusrStyle = (EscSeqUtils.DECSCUSR_Style)(((int)visibility >> 24) & 0xFF);
|
|
|
|
+
|
|
|
|
+ _mainLoopDriver?.WriteRaw (
|
|
|
|
+ EscSeqUtils.CSI_SetCursorStyle ((EscSeqUtils.DECSCUSR_Style)_currentDecscusrStyle)
|
|
|
|
+ );
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
_currentCursorVisibility = visibility;
|
|
_currentCursorVisibility = visibility;
|