mirror of
				https://github.com/tmux/tmux.git
				synced 2025-11-04 00:56:10 +00:00 
			
		
		
		
	The mouse valid flag needs to be correct before we fire the dragging
callback, so move the callback outside of server_client_check_mouse and use a new special key code to indicate it.
This commit is contained in:
		@@ -474,10 +474,9 @@ have_event:
 | 
			
		||||
	case NOTYPE:
 | 
			
		||||
		break;
 | 
			
		||||
	case DRAG:
 | 
			
		||||
		if (c->tty.mouse_drag_update != NULL) {
 | 
			
		||||
			c->tty.mouse_drag_update(c, m);
 | 
			
		||||
			key = KEYC_MOUSE;
 | 
			
		||||
		} else {
 | 
			
		||||
		if (c->tty.mouse_drag_update != NULL)
 | 
			
		||||
			key = KEYC_DRAGGING;
 | 
			
		||||
		else {
 | 
			
		||||
			switch (MOUSE_BUTTONS(b)) {
 | 
			
		||||
			case 0:
 | 
			
		||||
				if (where == PANE)
 | 
			
		||||
@@ -730,6 +729,7 @@ server_client_handle_key(struct client *c, key_code key)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/* Check for mouse keys. */
 | 
			
		||||
	m->valid = 0;
 | 
			
		||||
	if (key == KEYC_MOUSE) {
 | 
			
		||||
		if (c->flags & CLIENT_READONLY)
 | 
			
		||||
			return;
 | 
			
		||||
@@ -741,11 +741,13 @@ server_client_handle_key(struct client *c, key_code key)
 | 
			
		||||
		m->key = key;
 | 
			
		||||
 | 
			
		||||
		/*
 | 
			
		||||
		 * A mouse event that continues to be valid but that we do not
 | 
			
		||||
		 * want to pass through.
 | 
			
		||||
		 * Mouse drag is in progress, so fire the callback (now that
 | 
			
		||||
		 * the mouse event is valid).
 | 
			
		||||
		 */
 | 
			
		||||
		if (key == KEYC_MOUSE)
 | 
			
		||||
		if (key == KEYC_DRAGGING) {
 | 
			
		||||
			c->tty.mouse_drag_update(c, m);
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
	} else
 | 
			
		||||
		m->valid = 0;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user