Bug 54557 - invalid cursor left
Summary: invalid cursor left
Status: CONFIRMED
Alias: None
Product: Class Libraries
Classification: Mono
Component: System (show other bugs)
Version: unspecified
Hardware: PC Linux
: --- normal
Target Milestone: Untriaged
Assignee: Bugzilla
URL:
Depends on:
Blocks:
 
Reported: 2017-04-06 07:38 UTC by s2quake
Modified: 2017-06-26 14:27 UTC (History)
2 users (show)

See Also:
Tags:
Is this bug a regression?: ---
Last known good build:


Attachments

Description s2quake 2017-04-06 07:38:58 UTC
i want implement terminal as getline.cs  (https://github.com/mono/mono/blob/0bcbe39b148bb498742fc68416f8293ccd350fb6/mcs/tools/csharp/getline.cs) in runtime

problem is that Console.CursorLeft does not work on write korean character or etc

examples.

Console.Out.Write("최");
Console.CursorLeft == 2;

it does work

but 

var c = Console.TreatControlCAsInput;
Console.Out.Write("최");

Console.CursorLeft is not 2


using (var stream = Console.OpenStandardOutput())
using (var writer = new StreamWriter(stream))
{
    writer.Write("최");
}
Console.CursorLeft is 2

but

var c = Console.TreatControlCAsInput;
using (var stream = Console.OpenStandardOutput())
using (var writer = new StreamWriter(stream))
{
    writer.Write("최");
}

Console.CursorLeft is not 2
Comment 1 John Miller [MSFT] 2017-06-26 14:27:55 UTC
I was able to reproduce a difference using the code above when running on Mono 5.0 (Mac) vs on Windows with .NET. 

On Windows, using .NET, CursorLeft is not 2 for either value of Console.TreatControlCAsInput. With Mono, CursorLeft is true when Console.TreatControlCAsInput is false. Otherwise, it's 1.

Note You need to log in before you can comment on or make changes to this bug.