mirror of
				https://github.com/tmux/tmux.git
				synced 2025-11-03 16:46:18 +00:00 
			
		
		
		
	Instead of forcing mouse scroll to 1 in choose mode, scale it down
instead. Means modifier keys still increase the line count, just not as much. Based on a diff from Marcel Partap.
This commit is contained in:
		
							
								
								
									
										3
									
								
								tmux.h
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								tmux.h
									
									
									
									
									
								
							@@ -1130,6 +1130,9 @@ LIST_HEAD(tty_terms, tty_term);
 | 
			
		||||
#define MOUSE_WHEEL_UP 0
 | 
			
		||||
#define MOUSE_WHEEL_DOWN 1
 | 
			
		||||
 | 
			
		||||
/* Mouse wheel multipler. */
 | 
			
		||||
#define MOUSE_WHEEL_SCALE 3
 | 
			
		||||
 | 
			
		||||
/* Mouse event bits. */
 | 
			
		||||
#define MOUSE_EVENT_DOWN 0x1
 | 
			
		||||
#define MOUSE_EVENT_DRAG 0x2
 | 
			
		||||
 
 | 
			
		||||
@@ -752,11 +752,11 @@ tty_keys_mouse(struct tty *tty, const char *buf, size_t len, size_t *size)
 | 
			
		||||
		if (b & MOUSE_MASK_SHIFT)
 | 
			
		||||
			m->scroll = 1;
 | 
			
		||||
		else
 | 
			
		||||
			m->scroll = 3;
 | 
			
		||||
			m->scroll = MOUSE_WHEEL_SCALE;
 | 
			
		||||
		if (b & MOUSE_MASK_META)
 | 
			
		||||
			m->scroll *= 3;
 | 
			
		||||
			m->scroll *= MOUSE_WHEEL_SCALE;
 | 
			
		||||
		if (b & MOUSE_MASK_CTRL)
 | 
			
		||||
			m->scroll *= 3;
 | 
			
		||||
			m->scroll *= MOUSE_WHEEL_SCALE;
 | 
			
		||||
 | 
			
		||||
		b &= MOUSE_MASK_BUTTONS;
 | 
			
		||||
		if (b == 0)
 | 
			
		||||
 
 | 
			
		||||
@@ -721,17 +721,22 @@ window_choose_mouse(struct window_pane *wp, struct session *sess,
 | 
			
		||||
	struct window_choose_mode_data	*data = wp->modedata;
 | 
			
		||||
	struct screen			*s = &data->screen;
 | 
			
		||||
	struct window_choose_mode_item	*item;
 | 
			
		||||
	u_int				 idx;
 | 
			
		||||
	u_int				 idx, i, n;
 | 
			
		||||
 | 
			
		||||
	if (m->event == MOUSE_EVENT_WHEEL) {
 | 
			
		||||
		/*
 | 
			
		||||
		 * Don't use m->scroll and just move line-by-line or it's
 | 
			
		||||
		 * annoying.
 | 
			
		||||
		 * Multiple line scrolling by default is annoying, so scale
 | 
			
		||||
		 * m->scroll back down.
 | 
			
		||||
		 */
 | 
			
		||||
		if (m->wheel == MOUSE_WHEEL_UP)
 | 
			
		||||
			window_choose_key(wp, sess, KEYC_UP);
 | 
			
		||||
		else
 | 
			
		||||
			window_choose_key(wp, sess, KEYC_DOWN);
 | 
			
		||||
		n = m->scroll;
 | 
			
		||||
		if (n >= MOUSE_WHEEL_SCALE)
 | 
			
		||||
			n /= MOUSE_WHEEL_SCALE;
 | 
			
		||||
		for (i = 0; i < n; i++) {
 | 
			
		||||
			if (m->wheel == MOUSE_WHEEL_UP)
 | 
			
		||||
				window_choose_key(wp, sess, KEYC_UP);
 | 
			
		||||
			else
 | 
			
		||||
				window_choose_key(wp, sess, KEYC_DOWN);
 | 
			
		||||
		}
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user