version 1.27, 2009/09/10 17:16:24 |
version 1.28, 2009/10/06 07:09:00 |
|
|
void window_copy_cursor_end_of_line(struct window_pane *); |
void window_copy_cursor_end_of_line(struct window_pane *); |
void window_copy_cursor_left(struct window_pane *); |
void window_copy_cursor_left(struct window_pane *); |
void window_copy_cursor_right(struct window_pane *); |
void window_copy_cursor_right(struct window_pane *); |
void window_copy_cursor_up(struct window_pane *); |
void window_copy_cursor_up(struct window_pane *, int); |
void window_copy_cursor_down(struct window_pane *); |
void window_copy_cursor_down(struct window_pane *, int); |
void window_copy_cursor_next_word(struct window_pane *); |
void window_copy_cursor_next_word(struct window_pane *); |
void window_copy_cursor_previous_word(struct window_pane *); |
void window_copy_cursor_previous_word(struct window_pane *); |
void window_copy_scroll_up(struct window_pane *, u_int); |
void window_copy_scroll_up(struct window_pane *, u_int); |
|
|
window_copy_cursor_right(wp); |
window_copy_cursor_right(wp); |
return; |
return; |
case MODEKEYCOPY_UP: |
case MODEKEYCOPY_UP: |
window_copy_cursor_up(wp); |
window_copy_cursor_up(wp, 0); |
return; |
return; |
case MODEKEYCOPY_DOWN: |
case MODEKEYCOPY_DOWN: |
window_copy_cursor_down(wp); |
window_copy_cursor_down(wp, 0); |
return; |
return; |
|
case MODEKEYCOPY_SCROLLUP: |
|
window_copy_cursor_up(wp, 1); |
|
break; |
|
case MODEKEYCOPY_SCROLLDOWN: |
|
window_copy_cursor_down(wp, 1); |
|
break; |
case MODEKEYCOPY_PREVIOUSPAGE: |
case MODEKEYCOPY_PREVIOUSPAGE: |
window_copy_pageup(wp); |
window_copy_pageup(wp); |
break; |
break; |
|
|
struct window_copy_mode_data *data = wp->modedata; |
struct window_copy_mode_data *data = wp->modedata; |
|
|
if (data->cx == 0) { |
if (data->cx == 0) { |
window_copy_cursor_up(wp); |
window_copy_cursor_up(wp, 0); |
window_copy_cursor_end_of_line(wp); |
window_copy_cursor_end_of_line(wp); |
} else { |
} else { |
window_copy_update_cursor(wp, data->cx - 1, data->cy); |
window_copy_update_cursor(wp, data->cx - 1, data->cy); |
|
|
|
|
if (data->cx >= px) { |
if (data->cx >= px) { |
window_copy_cursor_start_of_line(wp); |
window_copy_cursor_start_of_line(wp); |
window_copy_cursor_down(wp); |
window_copy_cursor_down(wp, 0); |
} else { |
} else { |
window_copy_update_cursor(wp, data->cx + 1, data->cy); |
window_copy_update_cursor(wp, data->cx + 1, data->cy); |
if (window_copy_update_selection(wp)) |
if (window_copy_update_selection(wp)) |
|
|
} |
} |
|
|
void |
void |
window_copy_cursor_up(struct window_pane *wp) |
window_copy_cursor_up(struct window_pane *wp, int scroll_only) |
{ |
{ |
struct window_copy_mode_data *data = wp->modedata; |
struct window_copy_mode_data *data = wp->modedata; |
u_int ox, oy, px, py; |
u_int ox, oy, px, py; |
|
|
} |
} |
|
|
data->cx = data->lastcx; |
data->cx = data->lastcx; |
if (data->cy == 0) |
if (scroll_only || data->cy == 0) { |
window_copy_scroll_down(wp, 1); |
window_copy_scroll_down(wp, 1); |
else { |
if (scroll_only && window_copy_update_selection(wp)) |
|
window_copy_redraw_lines(wp, data->cy, 2); |
|
} else { |
window_copy_update_cursor(wp, data->cx, data->cy - 1); |
window_copy_update_cursor(wp, data->cx, data->cy - 1); |
if (window_copy_update_selection(wp)) |
if (window_copy_update_selection(wp)) |
window_copy_redraw_lines(wp, data->cy, 2); |
window_copy_redraw_lines(wp, data->cy, 2); |
|
|
} |
} |
|
|
void |
void |
window_copy_cursor_down(struct window_pane *wp) |
window_copy_cursor_down(struct window_pane *wp, int scroll_only) |
{ |
{ |
struct window_copy_mode_data *data = wp->modedata; |
struct window_copy_mode_data *data = wp->modedata; |
struct screen *s = &data->screen; |
struct screen *s = &data->screen; |
|
|
} |
} |
|
|
data->cx = data->lastcx; |
data->cx = data->lastcx; |
if (data->cy == screen_size_y(s) - 1) |
if (scroll_only || data->cy == screen_size_y(s) - 1) { |
window_copy_scroll_up(wp, 1); |
window_copy_scroll_up(wp, 1); |
else { |
if (scroll_only && window_copy_update_selection(wp)) |
|
window_copy_redraw_lines(wp, data->cy - 1, 2); |
|
} else { |
window_copy_update_cursor(wp, data->cx, data->cy + 1); |
window_copy_update_cursor(wp, data->cx, data->cy + 1); |
if (window_copy_update_selection(wp)) |
if (window_copy_update_selection(wp)) |
window_copy_redraw_lines(wp, data->cy - 1, 2); |
window_copy_redraw_lines(wp, data->cy - 1, 2); |
|
|
} |
} |
|
|
px = 0; |
px = 0; |
window_copy_cursor_down(wp); |
window_copy_cursor_down(wp, 0); |
|
|
py =screen_hsize( |
py =screen_hsize( |
&wp->base) + data->cy - data->oy; |
&wp->base) + data->cy - data->oy; |
|
|
(screen_hsize(&wp->base) == 0 || |
(screen_hsize(&wp->base) == 0 || |
data->oy >= screen_hsize(&wp->base) - 1)) |
data->oy >= screen_hsize(&wp->base) - 1)) |
goto out; |
goto out; |
window_copy_cursor_up(wp); |
window_copy_cursor_up(wp, 0); |
|
|
py = screen_hsize( |
py = screen_hsize( |
&wp->base) + data->cy - data->oy; |
&wp->base) + data->cy - data->oy; |