--- rxvt-unicode/src/command.C 2005/12/18 00:59:42 1.208 +++ rxvt-unicode/src/command.C 2005/12/22 21:56:19 1.214 @@ -137,13 +137,13 @@ x = Pixel2Col (x); y = Pixel2Row (y); - if (x < 0 || x >= ncol - || y < 0 || y >= nrow) + if (!IN_RANGE_EXC (x, 0, ncol) + || !IN_RANGE_EXC (y, 0, nrow)) return; for (;;) { - const line_t &l = save[y + saveLines - view_start]; + const line_t &l = ROW(y - view_start); text_t t = l.t[x]; @@ -156,7 +156,6 @@ x--; } - } #endif @@ -1037,7 +1036,7 @@ || mouse_slip_wheel_speed < 0 ? scr_page (DN, -mouse_slip_wheel_speed) : scr_page (UP, mouse_slip_wheel_speed)) { - if (view_start == nscrolled || + if (view_start == nsaved || view_start == 0) mouse_slip_wheel_speed = 0; @@ -1070,8 +1069,8 @@ cmdbuf_endp += n; return true; } - else if (n < 0 && errno != EAGAIN) - destroy (); + else if (n < 0 && errno != EAGAIN && errno != EINTR) + pty_ev.stop (); return false; } @@ -1603,7 +1602,7 @@ scroll_selection_lines = Pixel2Height (dist) / SELECTION_SCROLL_LINE_SPEEDUP + 1; - MIN_IT (scroll_selection_lines, + min_it (scroll_selection_lines, SELECTION_SCROLL_MAX_LINES); } else @@ -2454,8 +2453,8 @@ sy = 0; } - MIN_IT (nw, (unsigned int) (wrootattr.width - sx)); - MIN_IT (nh, (unsigned int) (wrootattr.height - sy)); + min_it (nw, (unsigned int) (wrootattr.width - sx)); + min_it (nh, (unsigned int) (wrootattr.height - sy)); XSync (disp, False); allowedxerror = -1; @@ -3354,7 +3353,7 @@ arg[0] = -arg[0]; /* FALLTHROUGH */ case CSI_SU: /* 8.3.148: (1) SCROLL UP */ - scr_scroll_text (screen.tscroll, screen.bscroll, arg[0], 0); + scr_scroll_text (screen.tscroll, screen.bscroll, arg[0]); break; case CSI_DA: /* 8.3.24: (0) DEVICE ATTRIBUTES */ @@ -4375,8 +4374,7 @@ memmove (v_buffer, v_buffer + written, v_buflen); } else if (written != -1 || (errno != EAGAIN && errno != EINTR)) - // original code just ignores this... - destroy (); + pty_ev.set (EVENT_READ); } /*----------------------- end-of-file (C source) -----------------------*/