From 9524080cb4ec14d8b60092bf7adbc10da057952f Mon Sep 17 00:00:00 2001 From: deuce <> Date: Fri, 2 Feb 2018 10:06:49 +0000 Subject: [PATCH] Fix up cursor position after Sixels, and hide cursor while drawing. --- src/conio/cterm.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/conio/cterm.c b/src/conio/cterm.c index d478d9eca8..d185e6cf6b 100644 --- a/src/conio/cterm.c +++ b/src/conio/cterm.c @@ -1279,12 +1279,20 @@ void draw_sixel(struct cterminal *cterm, char *str) int i; char *p; int max_row; + int olddmc; + + olddmc=*cterm->hold_update; + *cterm->hold_update=0; GETTEXTINFO(&ti); vmode = find_vmode(ti.currmode); attr2palette(ti.attribute, &fg, &bg); x = left = (cterm->x + WHEREX() - 2) * vparams[vmode].charwidth; y = (cterm->y + WHEREY() - 2) * vparams[vmode].charheight; + GOTOXY(ti.winright - ti.winleft + 1, ti.winbottom - ti.wintop + 1); + SETCURSORTYPE(_NOCURSOR); + GOTOXY(ti.winright - ti.winleft + 1, ti.winbottom - ti.wintop + 1); + *cterm->hold_update=1; ratio = trans = hgrid = 0; ratio = strtoul(str, &p, 10); if (*p == ';') { @@ -1396,15 +1404,16 @@ void draw_sixel(struct cterminal *cterm, char *str) } } + x = left; x = x / vparams[vmode].charwidth + 1; x -= (cterm->x - 1); - x++; - y = y / vparams[vmode].charheight + 1; + y = (y+6) / vparams[vmode].charheight + 1; y -= (cterm->y - 1); - y++; + *cterm->hold_update=olddmc; GOTOXY(x,y); + SETCURSORTYPE(cterm->cursor); } static void do_ansi(struct cterminal *cterm, char *retbuf, size_t retsize, int *speed) -- GitLab