]> granicus.if.org Git - vim/commitdiff
patch 8.1.2085: MS-Windows: draw error moving cursor over double-cell char v8.1.2085
authorBram Moolenaar <Bram@vim.org>
Fri, 27 Sep 2019 12:14:32 +0000 (14:14 +0200)
committerBram Moolenaar <Bram@vim.org>
Fri, 27 Sep 2019 12:14:32 +0000 (14:14 +0200)
Problem:    MS-Windows: draw error moving cursor over double-cell character.
Solution:   Move the cursor to the left edge if needed. (Nobuhiro Takasaki,
            closes #4986)

src/os_win32.c
src/version.c

index 3ce6057591b87fe27cf2625cc057aba7ba709c0f..790f75efd796fb342f165928ed1e38b37b4000d6 100644 (file)
@@ -5831,7 +5831,7 @@ delete_lines(unsigned cLines)
 
 
 /*
- * Set the cursor position
+ * Set the cursor position to (x,y) (1-based).
  */
     static void
 gotoxy(
@@ -5841,14 +5841,25 @@ gotoxy(
     if (x < 1 || x > (unsigned)Columns || y < 1 || y > (unsigned)Rows)
        return;
 
-    /* external cursor coords are 1-based; internal are 0-based */
-    g_coord.X = x - 1;
-    g_coord.Y = y - 1;
-
     if (!USE_VTP)
+    {
+       // external cursor coords are 1-based; internal are 0-based
+       g_coord.X = x - 1;
+       g_coord.Y = y - 1;
        SetConsoleCursorPosition(g_hConOut, g_coord);
+    }
     else
+    {
+       // Move the cursor to the left edge of the screen to prevent screen
+       // destruction.  Insider build bug.
+       if (conpty_type == 3)
+           vtp_printf("\033[%d;%dH", g_coord.Y + 1, 1);
+
        vtp_printf("\033[%d;%dH", y, x);
+
+       g_coord.X = x - 1;
+       g_coord.Y = y - 1;
+    }
 }
 
 
@@ -7266,7 +7277,7 @@ mch_setenv(char *var, char *value, int x UNUSED)
  * Confirm until this version.  Also the logic changes.
  * insider preview.
  */
-#define CONPTY_INSIDER_BUILD       MAKE_VER(10, 0, 18898)
+#define CONPTY_INSIDER_BUILD       MAKE_VER(10, 0, 18990)
 
 /*
  * Not stable now.
index 6c17851ecee4d7d1630f90442f1f646868f2312e..d215e908cdb6b0c11c942d5c9338c99d6accde29 100644 (file)
@@ -757,6 +757,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    2085,
 /**/
     2084,
 /**/