diff options
author | Nicholas Marriott <nicm@openbsd.org> | 2010-12-29 21:49:06 +0000 |
---|---|---|
committer | Nicholas Marriott <nicm@openbsd.org> | 2010-12-29 21:49:06 +0000 |
commit | f7c42c21bacf84af52079b239a18294851fbdb3a (patch) | |
tree | c5d086441c15ac8629880b2043f95ea3758a719d /window-copy.c | |
parent | 230e39ec3558142c94858efae53c36ab0efbcf59 (diff) | |
download | rtmux-f7c42c21bacf84af52079b239a18294851fbdb3a.tar.gz rtmux-f7c42c21bacf84af52079b239a18294851fbdb3a.tar.bz2 rtmux-f7c42c21bacf84af52079b239a18294851fbdb3a.zip |
Support all four of the xterm mouse modes. Based on a diff from hsim at
gmx.li.
Diffstat (limited to 'window-copy.c')
-rw-r--r-- | window-copy.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/window-copy.c b/window-copy.c index 9f92464b..3cc7e4c1 100644 --- a/window-copy.c +++ b/window-copy.c @@ -180,7 +180,7 @@ window_copy_init(struct window_pane *wp) s = &data->screen; screen_init(s, screen_size_x(&wp->base), screen_size_y(&wp->base), 0); if (options_get_number(&wp->window->options, "mode-mouse")) - s->mode |= MODE_MOUSE; + s->mode |= MODE_MOUSE_STANDARD; keys = options_get_number(&wp->window->options, "mode-keys"); if (keys == MODEKEY_EMACS) @@ -787,13 +787,14 @@ window_copy_mouse( * If already reading motion, move the cursor while buttons are still * pressed, or stop the selection on their release. */ - if (s->mode & MODE_MOUSEMOTION) { + if (s->mode & MODE_MOUSE_ANY) { if ((m->b & MOUSE_BUTTON) != MOUSE_UP) { window_copy_update_cursor(wp, m->x, m->y); if (window_copy_update_selection(wp)) window_copy_redraw_screen(wp); } else { - s->mode &= ~MODE_MOUSEMOTION; + s->mode &= ~MODE_MOUSE_ANY; + s->mode |= MODE_MOUSE_STANDARD; if (sess != NULL) { window_copy_copy_selection(wp, sess); window_pane_reset_mode(wp); @@ -802,9 +803,10 @@ window_copy_mouse( return; } - /* Otherwise i other buttons pressed, start selection and motion. */ + /* Otherwise if other buttons pressed, start selection and motion. */ if ((m->b & MOUSE_BUTTON) != MOUSE_UP) { - s->mode |= MODE_MOUSEMOTION; + s->mode &= ~MODE_MOUSE_STANDARD; + s->mode |= MODE_MOUSE_ANY; window_copy_update_cursor(wp, m->x, m->y); window_copy_start_selection(wp); |