--- rxvt-unicode/src/screen.C 2004/12/13 19:16:36 1.150 +++ rxvt-unicode/src/screen.C 2005/02/03 07:45:39 1.155 @@ -296,7 +296,6 @@ /* we have fewer rows so fix up cursor position */ MIN_IT (screen.cur.row, (int32_t)nrow - 1); - MIN_IT (swap.cur.row, (int32_t)nrow - 1); scr_reset_realloc (); /* realloc _last_ */ } @@ -337,13 +336,11 @@ screen.s_cur.row += k; TermWin.nscrolled -= k; } + #ifdef DEBUG_STRICT assert (screen.cur.row < TermWin.nrow); - assert (swap.cur.row < TermWin.nrow); #else /* drive with your eyes closed */ - MIN_IT (screen.cur.row, nrow - 1); - MIN_IT (swap.cur.row, nrow - 1); #endif TermWin.ncol = ncol; // save b/c scr_blank_screen_mem uses this } @@ -396,7 +393,6 @@ } MIN_IT (screen.cur.col, (int16_t)ncol - 1); - MIN_IT (swap.cur.col, (int16_t)ncol - 1); delete talloc; talloc = ta; delete ralloc; ralloc = ra; @@ -568,19 +564,14 @@ selection_check (2); /* check for boundary cross */ - SWAP_IT (current_screen, scrn, int); + i = current_screen; current_screen = scrn; scrn = i; SWAP_IT (screen.cur.row, swap.cur.row, int16_t); SWAP_IT (screen.cur.col, swap.cur.col, int16_t); -# ifdef DEBUG_STRICT - assert (screen.cur.row >= 0 && screen.cur.row < prev_nrow); - assert (screen.cur.col >= 0 && screen.cur.col < prev_ncol); -# else /* drive with your eyes closed */ MAX_IT (screen.cur.row, 0); MIN_IT (screen.cur.row, (int32_t)prev_nrow - 1); MAX_IT (screen.cur.col, 0); MIN_IT (screen.cur.col, (int32_t)prev_ncol - 1); -# endif #if NSCREENS if (options & Opt_secondaryScreen) @@ -2402,7 +2393,13 @@ if (rend & RS_Uline && font->descent > 1 && fore != back) { - XSetForeground (display->display, TermWin.gc, pix_colors[fore]); +#if ENABLE_FRILLS + if (ISSET_PIXCOLOR (Color_underline)) + XSetForeground (display->display, TermWin.gc, pix_colors[Color_underline]); + else +#endif + XSetForeground (display->display, TermWin.gc, pix_colors[fore]); + XDrawLine (display->display, drawBuffer, TermWin.gc, xpixel, ypixel + font->ascent + 1, xpixel + Width2Pixel (count) - 1, ypixel + font->ascent + 1); @@ -3414,7 +3411,7 @@ else if (selection.clicks == 3) { #if ENABLE_FRILLS - if ((options & Opt_tripleclickwords)) + if (options & Opt_tripleclickwords) { int end_row; @@ -3442,6 +3439,15 @@ selection.beg.col = 0; selection.end.col = ncol; + + // select a complete logical line + while (selection.beg.row > -TermWin.saveLines + && screen.tlen[selection.beg.row - 1 + TermWin.saveLines] == -1) + selection.beg.row--; + + while (selection.end.row < TermWin.nrow + && screen.tlen[selection.end.row + TermWin.saveLines] == -1) + selection.end.row++; } }