--- rxvt-unicode/src/screen.C 2006/01/03 17:34:44 1.206 +++ rxvt-unicode/src/screen.C 2006/01/05 01:04:10 1.209 @@ -724,6 +724,7 @@ if (nlines > 0) { nlines += screen.cur.row - screen.bscroll; + if (nlines > 0 && screen.tscroll == 0 && screen.bscroll == (nrow - 1)) @@ -2109,7 +2110,7 @@ XCopyArea (display->display, vt, vt, gc, 0, Row2Pixel (len + i), - (unsigned int)TermWin_TotalWidth (), + (unsigned int)this->width, (unsigned int)Height2Pixel (wlen - len + 1), 0, Row2Pixel (len)); len = -1; @@ -2566,7 +2567,7 @@ * Paste a selection direct to the command fd */ void -rxvt_term::paste (unsigned char *data, unsigned int len) +rxvt_term::paste (char *data, unsigned int len) { /* convert normal newline chars into common keyboard Return key sequence */ for (unsigned int i = 0; i < len; i++) @@ -2720,7 +2721,7 @@ char *s = rxvt_wcstombs (w); free (w); // TODO: strlen == only the first element will be converted. well... - paste ((unsigned char *)s, strlen (s)); + paste (s, strlen (s)); free (s); } else @@ -2729,12 +2730,12 @@ && cl) { for (int i = 0; i < cr; i++) - paste ((unsigned char *)cl[i], strlen (cl[i])); + paste (cl[i], strlen (cl[i])); XFreeStringList (cl); } else - paste (ct.value, ct.nitems); // paste raw + paste ((char *)ct.value, ct.nitems); // paste raw bailout: XFree (ct.value); @@ -2782,7 +2783,7 @@ if (selection.text) { /* internal selection */ char *str = rxvt_wcstombs (selection.text, selection.len); - paste ((unsigned char *)str, strlen (str)); + paste (str, strlen (str)); free (str); return; } @@ -3138,7 +3139,6 @@ break; } -Old_Word_Selection_You_Die: if (dirn == DN) col++; /* put us on one past the end */