--- rxvt-unicode/src/command.C 2006/01/17 05:47:42 1.268 +++ rxvt-unicode/src/command.C 2006/01/19 16:22:12 1.272 @@ -466,7 +466,7 @@ { /* normal XTerm key bindings */ case XK_Insert: /* Shift+Insert = paste mouse selection */ - selection_request (ev.time, 0, 0); + selection_request (ev.time); return; #if TODO /* rxvt extras */ @@ -1139,7 +1139,7 @@ cmdbuf_ptr = cmdbuf_base; cmdbuf_endp = cmdbuf_ptr + n; - ssize_t r = read (pty.pty, cmdbuf_endp, CBUFSIZ - n); + ssize_t r = read (pty->pty, cmdbuf_endp, CBUFSIZ - n); if (r > 0) { @@ -1504,6 +1504,8 @@ resize_all_windows (ev.xconfigure.width, ev.xconfigure.height, 1); } + HOOK_INVOKE ((this, HOOK_CONFIGURE_NOTIFY, DT_XEVENT, &ev, DT_END)); + #ifdef TRANSPARENT /* XXX: maybe not needed - leave in for now */ if (OPTION (Opt_transparent)) check_our_parents (); @@ -2155,9 +2157,14 @@ case Button3: selection_make (ev.time); break; + case Button2: - selection_request (ev.time, ev.x, ev.y); + if (IN_RANGE_EXC (ev.x, 0, width) + && IN_RANGE_EXC (ev.y, 0, height)) // inside window? + selection_request (ev.time); + break; + #ifdef MOUSE_WHEEL case Button4: case Button5: @@ -3766,7 +3773,6 @@ void rxvt_term::process_xterm_seq (int op, const char *str, char resp) { - int changed = 0; int color; char *buf, *name; bool query = str[0] == '?' && !str[1]; @@ -3892,30 +3898,34 @@ #endif case Rxvt_Pixmap: - if (*str != ';') - { + { + if (*str != ';') + { #if XPM_BACKGROUND - scale_pixmap (""); /* reset to default scaling */ - set_bgPixmap (str); /* change pixmap */ - scr_touch (true); + scale_pixmap (""); /* reset to default scaling */ + set_bgPixmap (str); /* change pixmap */ + scr_touch (true); #endif - } + } - while ((str = strchr (str, ';')) != NULL) - { - str++; + int changed = 0; + + while ((str = strchr (str, ';')) != NULL) + { + str++; #if XPM_BACKGROUND - changed += scale_pixmap (str); + changed += scale_pixmap (str); #endif - } + } - if (changed) - { + if (changed) + { #ifdef XPM_BACKGROUND - resize_pixmap (); - scr_touch (true); + resize_pixmap (); + scr_touch (true); #endif - } + } + } break; case Rxvt_restoreFG: @@ -3971,7 +3981,7 @@ else { set_locale (str); - pty.set_utf8_mode (enc_utf8); + pty->set_utf8_mode (enc_utf8); init_xlocale (); } break; @@ -4413,12 +4423,12 @@ if (HOOK_INVOKE ((this, HOOK_TT_WRITE, DT_STR_LEN, data, len, DT_END))) return; - if (pty.pty < 0) + if (pty->pty < 0) return; if (v_buflen == 0) { - ssize_t written = write (pty.pty, data, min (len, MAX_PTY_WRITE)); + ssize_t written = write (pty->pty, data, min (len, MAX_PTY_WRITE)); if ((unsigned int)written == len) return; @@ -4437,7 +4447,7 @@ void rxvt_term::pty_write () { - int written = write (pty.pty, v_buffer, min (v_buflen, MAX_PTY_WRITE)); + int written = write (pty->pty, v_buffer, min (v_buflen, MAX_PTY_WRITE)); if (written > 0) {