--- rxvt-unicode/src/command.C 2007/06/11 19:57:28 1.329 +++ rxvt-unicode/src/command.C 2007/08/03 22:40:10 1.340 @@ -521,7 +521,7 @@ } else { -# if ENABLE_OVERLAY +# if ISO_14755 scr_overlay_off (); # endif iso14755buf = 0; @@ -532,7 +532,7 @@ if (!(iso14755buf & ISO_14755_STARTED)) { iso14755buf |= ISO_14755_STARTED; -# if ENABLE_OVERLAY +# if ISO_14755 scr_overlay_new (0, -1, sizeof ("ISO 14755 mode") - 1, 1); scr_overlay_set (0, 0, "ISO 14755 mode"); # endif @@ -730,7 +730,7 @@ strcpy (kbuf, "\033[1~"); break; -#ifdef XK_KP_End +#ifdef XK_KP_Insert case XK_KP_Insert: /* allow shift to override */ if ((priv_modes & PrivMode_aplKP) ? !shft : shft) @@ -936,7 +936,7 @@ if (iso14755buf) if (iso14755buf & ISO_14755_52) { -# if ENABLE_OVERLAY +# if ISO_14755 scr_overlay_off (); # endif # if ISO_14755 @@ -969,7 +969,7 @@ } else if ((ev.state & (ShiftMask | ControlMask)) != (ShiftMask | ControlMask)) { -# if ENABLE_OVERLAY +# if ISO_14755 scr_overlay_off (); # endif if (iso14755buf & ISO_14755_51) @@ -1037,7 +1037,7 @@ { flush_ev.stop (); -#ifdef TRANSPARENT +#ifdef ENABLE_TRANSPARENCY if (want_full_refresh) { want_full_refresh = 0; @@ -1112,7 +1112,6 @@ { make_current (); - refresh_limit = 1; refresh_count = 0; flush (); } @@ -1438,10 +1437,6 @@ } break; - case MappingNotify: - XRefreshKeyboardMapping (&ev.xmapping); - break; - /* * XXX: this is not the _current_ arrangement * Here's my conclusion: @@ -1491,8 +1486,9 @@ { seen_resize = 1; resize_all_windows (ev.xconfigure.width, ev.xconfigure.height, 1); -#ifdef XPM_BACKGROUND - if (!option (Opt_transparent) && bgPixmap.auto_resize) +#ifdef HAVE_BG_PIXMAP + /* TODO: replace with update_pixmap() that should unify transparency and bg image handling ! */ + if (!option (Opt_transparent) && bgPixmap.window_size_sensitive ()) { resize_pixmap (); scr_touch (true); @@ -1502,7 +1498,7 @@ HOOK_INVOKE ((this, HOOK_CONFIGURE_NOTIFY, DT_XEVENT, &ev, DT_END)); -#ifdef TRANSPARENT +#ifdef ENABLE_TRANSPARENCY if (option (Opt_transparent)) check_our_parents (); #endif @@ -1546,11 +1542,11 @@ HOOK_INVOKE ((this, HOOK_UNMAP_NOTIFY, DT_XEVENT, &ev, DT_END)); break; -#ifdef TRANSPARENT +#ifdef ENABLE_TRANSPARENCY case ReparentNotify: rootwin_cb (ev); break; -#endif /* TRANSPARENT */ +#endif /* ENABLE_TRANSPARENCY */ case GraphicsExpose: case Expose: @@ -1584,7 +1580,7 @@ scrollbar_show (0); } -#ifdef TRANSPARENT +#ifdef ENABLE_TRANSPARENCY if (am_transparent && ev.xany.window == parent[0]) XClearWindow (dpy, ev.xany.window); #endif @@ -1695,7 +1691,6 @@ scr_move_to (scrollbar_position (ev.xbutton.y) - csrO, scrollbar_size ()); want_refresh = 1; - refresh_limit = 0; scrollbar_show (1); } break; @@ -1787,7 +1782,7 @@ if (iso14755buf) { iso14755buf = 0; -# if ENABLE_OVERLAY +# if ISO_14755 scr_overlay_off (); # endif } @@ -1824,7 +1819,7 @@ #endif } -#if TRANSPARENT || ENABLE_PERL +#if ENABLE_TRANSPARENCY || ENABLE_PERL void rxvt_term::rootwin_cb (XEvent &ev) { @@ -1834,7 +1829,7 @@ && HOOK_INVOKE ((this, HOOK_ROOT_EVENT, DT_XEVENT, &ev, DT_END))) return; -# if TRANSPARENT +# if ENABLE_TRANSPARENCY switch (ev.type) { case PropertyNotify: @@ -2293,13 +2288,16 @@ refresh_count++; - if (!option (Opt_jumpScroll) - || (refresh_count >= refresh_limit * (nrow - 1))) + if (!option (Opt_jumpScroll) || refresh_count >= nrow - 1) { - refreshnow = true; refresh_count = 0; - ch = NOCHAR; - break; + + if (!option (Opt_skipScroll) || io_manager::now () > NOW + 1. / 60.) + { + refreshnow = true; + ch = NOCHAR; + break; + } } // scr_add_lines only works for nlines <= nrow - 1. @@ -2337,21 +2335,14 @@ /* * If there have been a lot of new lines, then update the screen - * What the heck I'll cheat and only refresh less than every page-full. - * the number of pages between refreshes is refresh_limit, which - * is incremented here because we must be doing flat-out scrolling. + * What the heck we'll cheat and only refresh less than every page-full. + * if skipScroll is enabled. */ if (refreshnow) { - if (option (Opt_jumpScroll) && refresh_limit < REFRESH_PERIOD) - refresh_limit++; - else - { - flag = true; - //TODO: due to popular request, implement "skipscroll" option here - scr_refresh (); - want_refresh = 1; - } + flag = true; + scr_refresh (); + want_refresh = 1; } } @@ -2582,7 +2573,7 @@ case 0x9b: /* CSI */ process_csi_seq (); break; - case 0x9d: /* CSI */ + case 0x9d: /* OSC */ process_osc_seq (); break; #endif @@ -2820,8 +2811,8 @@ int n, ndef; int arg[ESC_ARGS]; - for (nargs = ESC_ARGS; nargs > 0;) - arg[--nargs] = 0; + memset (arg, 0, sizeof (arg)); + nargs = 0; priv = 0; ch = cmd_getc (); @@ -2875,7 +2866,7 @@ case '>': if (ch == CSI_DA) /* secondary device attributes */ { - // first parameter is normally 0 for vt100, 1 for some newer vtxxx, 'R' for rxvt, + // first parameter is normally 0 for vt100, 1 for vt220, 'R' for rxvt, // 'U' for rxvt-unicode != 7.[34] (where it was broken). // // second parameter is xterm patch level for xterm, MMmmpp (e.g. 20703) for rxvt @@ -3443,7 +3434,7 @@ process_color_seq (op, Color_IT, str, resp); break; #endif -#if TRANSPARENT && TINTING +#if ENABLE_TRANSPARENCY && TINTING case URxvt_Color_tint: process_color_seq (op, Color_tint, str, resp); @@ -3455,15 +3446,14 @@ break; #endif +#if XPM_BACKGROUND case Rxvt_Pixmap: { if (*str != ';') { -#if XPM_BACKGROUND - scale_pixmap (""); /* reset to default scaling */ + bgPixmap.handle_geometry (""); /* reset to default scaling */ set_bgPixmap (str); /* change pixmap */ scr_touch (true); -#endif } int changed = 0; @@ -3471,24 +3461,21 @@ while ((str = strchr (str, ';')) != NULL) { str++; -#if XPM_BACKGROUND - changed += scale_pixmap (str); -#endif + changed += bgPixmap.handle_geometry (str); } if (changed) { -#ifdef XPM_BACKGROUND resize_pixmap (); scr_touch (true); -#endif } -#if TRANSPARENT && defined(HAVE_AFTERIMAGE) +#if ENABLE_TRANSPARENCY && defined(HAVE_AFTERIMAGE) if (option (Opt_transparent)) check_our_parents (); #endif } break; +#endif case Rxvt_restoreFG: set_window_color (Color_fg, str);