tinywl: simplify logic for sending pointer events
This commit is contained in:
		
							parent
							
								
									de1522aeee
								
							
						
					
					
						commit
						f2f3df9fb1
					
				|  | @ -432,21 +432,19 @@ static void process_cursor_motion(struct tinywl_server *server, uint32_t time) { | |||
| 				server->cursor_mgr, "left_ptr", server->cursor); | ||||
| 	} | ||||
| 	if (surface) { | ||||
| 		bool focus_changed = seat->pointer_state.focused_surface != surface; | ||||
| 		/*
 | ||||
| 		 * "Enter" the surface if necessary. This lets the client know that the | ||||
| 		 * cursor has entered one of its surfaces. | ||||
| 		 * Send pointer enter and motion events. | ||||
| 		 * | ||||
| 		 * Note that this gives the surface "pointer focus", which is distinct | ||||
| 		 * The enter event gives the surface "pointer focus", which is distinct | ||||
| 		 * from keyboard focus. You get pointer focus by moving the pointer over | ||||
| 		 * a window. | ||||
| 		 * | ||||
| 		 * Note that wlroots will avoid sending duplicate enter/motion events if | ||||
| 		 * the surface has already has pointer focus or if the client is already | ||||
| 		 * aware of the coordinates passed. | ||||
| 		 */ | ||||
| 		wlr_seat_pointer_notify_enter(seat, surface, sx, sy); | ||||
| 		if (!focus_changed) { | ||||
| 			/* The enter event contains coordinates, so we only need to notify
 | ||||
| 			 * on motion if the focus did not change. */ | ||||
| 			wlr_seat_pointer_notify_motion(seat, time, sx, sy); | ||||
| 		} | ||||
| 		wlr_seat_pointer_notify_motion(seat, time, sx, sy); | ||||
| 	} else { | ||||
| 		/* Clear pointer focus so future button events and such are not sent to
 | ||||
| 		 * the last client to have the cursor over it. */ | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue