mirror of
				https://github.com/tmux/tmux.git
				synced 2025-11-04 09:26:05 +00:00 
			
		
		
		
	Support all four of the xterm mouse modes. Based on a diff from hsim at
gmx.li.
This commit is contained in:
		@@ -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);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user