--- rxvt-unicode/src/screen.C 2006/01/15 06:39:19 1.229 +++ rxvt-unicode/src/screen.C 2006/01/16 08:57:02 1.234 @@ -117,7 +117,7 @@ /* Fill part/all of a line with blanks. */ void -rxvt_term::scr_blank_line (line_t &l, unsigned int col, unsigned int width, rend_t efs) +rxvt_term::scr_blank_line (line_t &l, unsigned int col, unsigned int width, rend_t efs) const { if (!l.t) { @@ -144,7 +144,7 @@ /* ------------------------------------------------------------------------- */ /* Fill a full line with blanks - make sure it is allocated first */ void -rxvt_term::scr_blank_screen_mem (line_t &l, rend_t efs) +rxvt_term::scr_blank_screen_mem (line_t &l, rend_t efs) const { scr_blank_line (l, 0, ncol, efs); @@ -619,8 +619,6 @@ { top_row = max (top_row - count, -saveLines); - HOOK_INVOKE ((this, HOOK_SCROLL_BACK, DT_INT, count, DT_INT, top_row, DT_END)); - // scroll everything up 'count' lines term_start = (term_start + count) % total_rows; @@ -677,6 +675,9 @@ && view_start != 0 && view_start != -saveLines) scr_page (UP, count); + + if (SHOULD_INVOKE (HOOK_SCROLL_BACK)) + HOOK_INVOKE ((this, HOOK_SCROLL_BACK, DT_INT, count, DT_INT, top_row, DT_END)); } else { @@ -1813,9 +1814,7 @@ void rxvt_term::scr_move_to (int y, int len) { - int p = (top_row - nrow) * (len - y) / len + (nrow - 1); - - scr_changeview (p); + scr_changeview ((top_row - nrow) * (len - y) / len + (nrow - 1)); } /* ------------------------------------------------------------------------- */ @@ -1843,9 +1842,10 @@ num_scr += new_view_start - view_start; view_start = new_view_start; - HOOK_INVOKE ((this, HOOK_VIEW_CHANGE, DT_INT, view_start, DT_END)); want_refresh = 1; + HOOK_INVOKE ((this, HOOK_VIEW_CHANGE, DT_INT, view_start, DT_END)); + return true; }