… | |
… | |
260 | |
260 | |
261 | if (nrow < prev_nrow) |
261 | if (nrow < prev_nrow) |
262 | { |
262 | { |
263 | /* delete rows */ |
263 | /* delete rows */ |
264 | k = min (TermWin.nscrolled, prev_nrow - nrow); |
264 | k = min (TermWin.nscrolled, prev_nrow - nrow); |
|
|
265 | // k = max (0, - ( (nrow - 1) - r->screen.cur.row)); // mmc's http://maruska.dyndns.org/wiki/scrolling-bug //make configurable? //D TODO |
265 | scr_scroll_text (0, (int)prev_nrow - 1, k, 1); |
266 | scr_scroll_text (0, (int)prev_nrow - 1, k, 1); |
266 | |
267 | |
267 | for (p = nrow; p < prev_nrow; p++) |
268 | for (p = nrow; p < prev_nrow; p++) |
268 | { |
269 | { |
269 | q = p + TermWin.saveLines; |
270 | q = p + TermWin.saveLines; |
… | |
… | |
441 | */ |
442 | */ |
442 | void |
443 | void |
443 | rxvt_term::scr_release () |
444 | rxvt_term::scr_release () |
444 | { |
445 | { |
445 | unsigned int total_rows; |
446 | unsigned int total_rows; |
446 | int i; |
|
|
447 | |
447 | |
448 | total_rows = TermWin.nrow + TermWin.saveLines; |
448 | total_rows = TermWin.nrow + TermWin.saveLines; |
449 | |
449 | |
450 | delete talloc; talloc = 0; |
450 | delete talloc; talloc = 0; |
451 | delete ralloc; ralloc = 0; |
451 | delete ralloc; ralloc = 0; |
… | |
… | |
778 | if (len <= 0) /* sanity */ |
778 | if (len <= 0) /* sanity */ |
779 | return; |
779 | return; |
780 | |
780 | |
781 | unsigned char checksel; |
781 | unsigned char checksel; |
782 | unicode_t c; |
782 | unicode_t c; |
783 | int i, row, last_col; |
783 | int row, last_col; |
784 | text_t *stp; |
784 | text_t *stp; |
785 | rend_t *srp; |
785 | rend_t *srp; |
786 | const unicode_t *strend = str + len; |
786 | const unicode_t *strend = str + len; |
787 | |
787 | |
788 | want_refresh = 1; |
788 | want_refresh = 1; |
… | |
… | |
2161 | |
2161 | |
2162 | #if ENABLE_OVERLAY |
2162 | #if ENABLE_OVERLAY |
2163 | scr_swap_overlay (); |
2163 | scr_swap_overlay (); |
2164 | #endif |
2164 | #endif |
2165 | |
2165 | |
2166 | rend_t *drp, *srp; /* drawn-rend-pointer, screen-rend-pointer */ |
|
|
2167 | text_t *dtp, *stp; /* drawn-text-pointer, screen-text-pointer */ |
|
|
2168 | |
|
|
2169 | #ifndef NO_SLOW_LINK_SUPPORT |
2166 | #ifndef NO_SLOW_LINK_SUPPORT |
2170 | /* |
2167 | /* |
2171 | * D: CopyArea pass - very useful for slower links |
2168 | * D: CopyArea pass - very useful for slower links |
2172 | * This has been deliberately kept simple. |
2169 | * This has been deliberately kept simple. |
2173 | */ |
2170 | */ |
… | |
… | |
2308 | |
2305 | |
2309 | // sometimes we optimize away the trailing NOCHAR's, add them back |
2306 | // sometimes we optimize away the trailing NOCHAR's, add them back |
2310 | while (i && text[count] == NOCHAR) |
2307 | while (i && text[count] == NOCHAR) |
2311 | count++, i--; |
2308 | count++, i--; |
2312 | |
2309 | |
2313 | #if ENABLE_STYLES |
|
|
2314 | // force redraw after "careful" characters to avoid pixel droppings |
|
|
2315 | if (srp[col] & RS_Careful && col < TermWin.ncol - 1 && 0) |
|
|
2316 | drp[col + 1] = ~srp[col + 1]; |
|
|
2317 | |
|
|
2318 | // include previous careful character(s) if possible, looks nicer (best effort...) |
|
|
2319 | while (text > stp |
|
|
2320 | && srp[text - stp - 1] & RS_Careful |
|
|
2321 | && RS_SAME (rend, srp[text - stp - 1])) |
|
|
2322 | text--, count++, xpixel -= TermWin.fwidth; |
|
|
2323 | #endif |
|
|
2324 | |
|
|
2325 | /* |
2310 | /* |
2326 | * Determine the attributes for the string |
2311 | * Determine the attributes for the string |
2327 | */ |
2312 | */ |
2328 | int fore = GET_FGCOLOR (rend); // desired foreground |
2313 | int fore = GET_FGCOLOR (rend); // desired foreground |
2329 | int back = GET_BGCOLOR (rend); // desired background |
2314 | int back = GET_BGCOLOR (rend); // desired background |
2330 | |
2315 | |
2331 | // only do special processing if ana attributes are set, which is rare |
2316 | // only do special processing if any attributes are set, which is rare |
2332 | if (rend & (RS_Bold | RS_Italic | RS_Uline | RS_RVid | RS_Blink)) |
2317 | if (rend & (RS_Bold | RS_Italic | RS_Uline | RS_RVid | RS_Blink | RS_Careful)) |
2333 | { |
2318 | { |
|
|
2319 | #if ENABLE_STYLES |
|
|
2320 | // force redraw after "careful" characters to avoid pixel droppings |
|
|
2321 | if (srp[col] & RS_Careful && col < TermWin.ncol - 1 && 0) |
|
|
2322 | drp[col + 1] = ~srp[col + 1]; |
|
|
2323 | |
|
|
2324 | // include previous careful character(s) if possible, looks nicer (best effort...) |
|
|
2325 | while (text > stp |
|
|
2326 | && srp[text - stp - 1] & RS_Careful |
|
|
2327 | && RS_SAME (rend, srp[text - stp - 1])) |
|
|
2328 | text--, count++, xpixel -= TermWin.fwidth; |
|
|
2329 | #endif |
|
|
2330 | |
2334 | bool invert = rend & RS_RVid; |
2331 | bool invert = rend & RS_RVid; |
2335 | |
2332 | |
2336 | #ifndef NO_BOLD_UNDERLINE_REVERSE |
2333 | #ifndef NO_BOLD_UNDERLINE_REVERSE |
2337 | if (rend & RS_Bold |
2334 | if (rend & RS_Bold |
2338 | && fore == Color_fg) |
2335 | && fore == Color_fg) |
… | |
… | |
2365 | SWAP_IT (fore, back, int); |
2362 | SWAP_IT (fore, back, int); |
2366 | |
2363 | |
2367 | #ifndef NO_BOLD_UNDERLINE_REVERSE |
2364 | #ifndef NO_BOLD_UNDERLINE_REVERSE |
2368 | if (ISSET_PIXCOLOR (Color_RV)) |
2365 | if (ISSET_PIXCOLOR (Color_RV)) |
2369 | back = Color_RV; |
2366 | back = Color_RV; |
|
|
2367 | |
|
|
2368 | if (fore == back) |
|
|
2369 | { |
|
|
2370 | fore = Color_bg; |
|
|
2371 | back = Color_fg; |
|
|
2372 | } |
2370 | #endif |
2373 | #endif |
2371 | } |
2374 | } |
2372 | |
2375 | |
2373 | #ifdef TEXT_BLINK |
2376 | #ifdef TEXT_BLINK |
2374 | if (rend & RS_Blink && (back == Color_bg || fore == Color_bg)) |
2377 | if (rend & RS_Blink && (back == Color_bg || fore == Color_bg)) |
… | |
… | |
2546 | if (!TermWin.mapped) |
2549 | if (!TermWin.mapped) |
2547 | return; |
2550 | return; |
2548 | |
2551 | |
2549 | num_scr_allow = 0; |
2552 | num_scr_allow = 0; |
2550 | want_refresh = 1; |
2553 | want_refresh = 1; |
2551 | |
|
|
2552 | #if TRANSPARENT |
|
|
2553 | if ((options & Opt_transparent) && (am_pixmap_trans == 0)) |
|
|
2554 | { |
|
|
2555 | int i; |
|
|
2556 | |
|
|
2557 | if (!(options & Opt_transparent_all)) |
|
|
2558 | i = 0; |
|
|
2559 | else |
|
|
2560 | i = (int) (sizeof (TermWin.parent) / sizeof (Window)); |
|
|
2561 | |
|
|
2562 | while (i--) |
|
|
2563 | if (TermWin.parent[i] != None) |
|
|
2564 | XClearWindow (display->display, TermWin.parent[i]); |
|
|
2565 | } |
|
|
2566 | #endif |
|
|
2567 | |
2554 | |
2568 | if (really) |
2555 | if (really) |
2569 | XClearWindow (display->display, TermWin.vt); |
2556 | XClearWindow (display->display, TermWin.vt); |
2570 | } |
2557 | } |
2571 | |
2558 | |