--- rxvt-unicode/src/command.C 2012/01/19 13:33:43 1.505 +++ rxvt-unicode/src/command.C 2012/05/17 10:18:32 1.509 @@ -1018,6 +1018,21 @@ #ifdef CURSOR_BLINK void +rxvt_term::cursor_blink_reset () +{ + if (hidden_cursor) + { + hidden_cursor = 0; + want_refresh = 1; + } + + if (option (Opt_cursorBlink)) + cursor_blink_ev.again (); + else + cursor_blink_ev.stop (); +} + +void rxvt_term::cursor_blink_cb (ev::timer &w, int revents) { hidden_cursor = !hidden_cursor; @@ -1678,16 +1693,8 @@ } #if defined(CURSOR_BLINK) - if (option (Opt_cursorBlink) && ev.type == KeyPress) - { - if (hidden_cursor) - { - hidden_cursor = 0; - want_refresh = 1; - } - - cursor_blink_ev.again (); - } + if (ev.type == KeyPress) + cursor_blink_reset (); #endif #if defined(POINTER_BLANK) @@ -3448,8 +3455,8 @@ char str[256]; sprintf (str, "[%dx%d+%d+%d]", - min (h_scale, 32767), min (v_scale, 32767), - min (h_align, 32767), min (v_align, 32767)); + min (bg_image.h_scale, 32767), min (bg_image.v_scale, 32767), + min (bg_image.h_align, 32767), min (bg_image.v_align, 32767)); process_xterm_seq (XTerm_title, str, CHAR_ST); } else @@ -3458,13 +3465,13 @@ if (*str != ';') { - if (bg_set_file (str)) /* change pixmap */ + if (bg_image.set_file (str)) /* change pixmap */ changed = true; } else { str++; - if (bg_set_geometry (str, true)) + if (bg_image.set_geometry (str, true)) changed = true; } @@ -3581,7 +3588,10 @@ if (mode == 's') { - SavedModes |= (priv_modes & bit); + if (priv_modes & bit) + SavedModes |= bit; + else + SavedModes &= ~bit; return -1; } else