1
0
mirror of https://github.com/tmux/tmux.git synced 2025-04-13 23:08:49 +00:00

Only redraw if offset changed.

This commit is contained in:
Nicholas Marriott 2007-11-21 14:39:46 +00:00
parent 08a0c5e661
commit 4f8ed29022

View File

@ -1,4 +1,4 @@
/* $Id: window-scroll.c,v 1.2 2007-11-21 14:01:53 nicm Exp $ */ /* $Id: window-scroll.c,v 1.3 2007-11-21 14:39:46 nicm Exp $ */
/* /*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@ -48,7 +48,7 @@ window_scroll_init(struct window *w)
} }
void void
window_scroll_resize(struct window *w, u_int sx, u_int sy) window_scroll_resize(unused struct window *w, unused u_int sx, unused u_int sy)
{ {
} }
@ -86,8 +86,9 @@ void
window_scroll_key(struct window *w, int key) window_scroll_key(struct window *w, int key)
{ {
struct window_scroll_mode_data *data = w->modedata; struct window_scroll_mode_data *data = w->modedata;
u_int sy = screen_size_y(&w->screen); u_int off, sy = screen_size_y(&w->screen);
off = data->off;
switch (key) { switch (key) {
case 'Q': case 'Q':
case 'q': case 'q':
@ -102,14 +103,12 @@ window_scroll_key(struct window *w, int key)
case KEYC_UP: case KEYC_UP:
if (data->off < data->size) if (data->off < data->size)
data->off++; data->off++;
server_redraw_window_all(w);
break; break;
case 'j': case 'j':
case 'J': case 'J':
case KEYC_DOWN: case KEYC_DOWN:
if (data->off > 0) if (data->off > 0)
data->off--; data->off--;
server_redraw_window_all(w);
break; break;
case '\025': case '\025':
case KEYC_PPAGE: case KEYC_PPAGE:
@ -117,7 +116,6 @@ window_scroll_key(struct window *w, int key)
data->off = data->size; data->off = data->size;
else else
data->off += sy; data->off += sy;
server_redraw_window_all(w);
break; break;
case '\006': case '\006':
case KEYC_NPAGE: case KEYC_NPAGE:
@ -125,7 +123,8 @@ window_scroll_key(struct window *w, int key)
data->off = 0; data->off = 0;
else else
data->off -= sy; data->off -= sy;
server_redraw_window_all(w);
break; break;
} }
if (off != data->off)
server_redraw_window_all(w);
} }