mirror of
				https://github.com/tmux/tmux.git
				synced 2025-11-04 00:56:10 +00:00 
			
		
		
		
	When a mouse drag is finished, fire a MouseUp key press, instead of
doing the drag end in code. From Stephen Coakley.
This commit is contained in:
		@@ -384,8 +384,42 @@ server_client_check_mouse(struct client *c)
 | 
			
		||||
		c->tty.mouse_drag_update = NULL;
 | 
			
		||||
		c->tty.mouse_drag_release = NULL;
 | 
			
		||||
 | 
			
		||||
		/*
 | 
			
		||||
		 * End a mouse drag by passing a MouseUp key corresponding to
 | 
			
		||||
		 * the button that started the drag.
 | 
			
		||||
		 */
 | 
			
		||||
		switch (c->tty.mouse_drag_flag) {
 | 
			
		||||
		case 1:
 | 
			
		||||
			if (where == PANE)
 | 
			
		||||
				key = KEYC_MOUSEUP1_PANE;
 | 
			
		||||
			if (where == STATUS)
 | 
			
		||||
				key = KEYC_MOUSEUP1_STATUS;
 | 
			
		||||
			if (where == BORDER)
 | 
			
		||||
				key = KEYC_MOUSEUP1_BORDER;
 | 
			
		||||
			break;
 | 
			
		||||
		case 2:
 | 
			
		||||
			if (where == PANE)
 | 
			
		||||
				key = KEYC_MOUSEUP2_PANE;
 | 
			
		||||
			if (where == STATUS)
 | 
			
		||||
				key = KEYC_MOUSEUP2_STATUS;
 | 
			
		||||
			if (where == BORDER)
 | 
			
		||||
				key = KEYC_MOUSEUP2_BORDER;
 | 
			
		||||
			break;
 | 
			
		||||
		case 3:
 | 
			
		||||
			if (where == PANE)
 | 
			
		||||
				key = KEYC_MOUSEUP3_PANE;
 | 
			
		||||
			if (where == STATUS)
 | 
			
		||||
				key = KEYC_MOUSEUP3_STATUS;
 | 
			
		||||
			if (where == BORDER)
 | 
			
		||||
				key = KEYC_MOUSEUP3_BORDER;
 | 
			
		||||
			break;
 | 
			
		||||
		default:
 | 
			
		||||
			key = KEYC_MOUSE;
 | 
			
		||||
			break;
 | 
			
		||||
		}
 | 
			
		||||
		c->tty.mouse_drag_flag = 0;
 | 
			
		||||
		return (KEYC_MOUSE); /* not a key, but still may want to pass */
 | 
			
		||||
 | 
			
		||||
		return (key);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/* Convert to a key binding. */
 | 
			
		||||
@@ -425,7 +459,11 @@ server_client_check_mouse(struct client *c)
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		c->tty.mouse_drag_flag = 1;
 | 
			
		||||
		/*
 | 
			
		||||
		 * Begin a drag by setting the flag to a non-zero value that
 | 
			
		||||
		 * corresponds to the mouse button in use.
 | 
			
		||||
		 */
 | 
			
		||||
		c->tty.mouse_drag_flag = MOUSE_BUTTONS(b) + 1;
 | 
			
		||||
		break;
 | 
			
		||||
	case WHEEL:
 | 
			
		||||
		if (MOUSE_BUTTONS(b) == MOUSE_WHEEL_UP) {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user