Andrej Nabergoj wrote in
 <20250401210626.2g25ob2s5nxng...@debian.si>:
 |The problem is not with lowermost, rightmost cell but one that is
 |two positions before rightmost, lowermost cell.
 
Of course, if you write a wide character that takes multiple
cells, we end up exactly there again.

 |I looked at tputc() function, but I don't know yet how to use these
 |debugging tools.
 |If I comment this two lines for example it renders whole character, but
 |of course this is not a solution:

Hmmm, i never looked there, but i see quite a bit of
"term.c.x+width < term.col", but also "term.c.x+width > term.col",
which is a bit odd, shouldn't it be >= in the latter, then?  From
the logical-only side of the road.
This is shortly before this code you code me thinks

 |if (width == 2) {
 |    /* gp->mode |= ATTR_WIDE; */
 |    if (term.c.x+1 < term.col) {
 |        if (gp[1].mode == ATTR_WIDE && term.c.x+2 < term.col) {
 |            gp[2].u = ' ';
 |            gp[2].mode &= ~ATTR_WDUMMY;
 |}
 |        gp[1].u = '\0';
 |        /* gp[1].mode = ATTR_WDUMMY; */
 |}
 |}

Ie i mean

        if (term.c.x+width > term.col) {
                if (IS_SET(MODE_WRAP))
                        tnewline(1);
                else
                        tmoveto(term.col - width, term.c.y);
                gp = &term.line[term.c.y][term.c.x];
        }

What happens if you use ">= term.col"?

  ...

--steffen
|
|Der Kragenbaer,                The moon bear,
|der holt sich munter           he cheerfully and one by one
|einen nach dem anderen runter  wa.ks himself off
|(By Robert Gernhardt)

Reply via email to