mirror of
				https://github.com/swaywm/sway.git
				synced 2025-11-03 09:01:43 -05:00 
			
		
		
		
	seat/dnd: support null drag icon surfaces
As per the Wayland spec [1]: > The icon surface is an optional (can be NULL) surface that provides an > icon to be moved around with the cursor. However, as of now Sway "start_drag" signal handler does not starts the DND session unless a non-NULL drag icons is provided. This patch fixes it by skipping handling of the drag icon if it is null. Fixes #5509 [1] https://wayland.freedesktop.org/docs/html/apa.html#protocol-spec-wl_data_device Signed-off-by: Nick Diego Yamane <nickdiego@igalia.com>
This commit is contained in:
		
							parent
							
								
									bac9559665
								
							
						
					
					
						commit
						e5954f321f
					
				
					 1 changed files with 22 additions and 24 deletions
				
			
		| 
						 | 
					@ -470,10 +470,7 @@ static void handle_start_drag(struct wl_listener *listener, void *data) {
 | 
				
			||||||
	wl_signal_add(&wlr_drag->events.destroy, &drag->destroy);
 | 
						wl_signal_add(&wlr_drag->events.destroy, &drag->destroy);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	struct wlr_drag_icon *wlr_drag_icon = wlr_drag->icon;
 | 
						struct wlr_drag_icon *wlr_drag_icon = wlr_drag->icon;
 | 
				
			||||||
	if (wlr_drag_icon == NULL) {
 | 
						if (wlr_drag_icon != NULL) {
 | 
				
			||||||
		return;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		struct sway_drag_icon *icon = calloc(1, sizeof(struct sway_drag_icon));
 | 
							struct sway_drag_icon *icon = calloc(1, sizeof(struct sway_drag_icon));
 | 
				
			||||||
		if (icon == NULL) {
 | 
							if (icon == NULL) {
 | 
				
			||||||
			sway_log(SWAY_ERROR, "Allocation failed");
 | 
								sway_log(SWAY_ERROR, "Allocation failed");
 | 
				
			||||||
| 
						 | 
					@ -495,6 +492,7 @@ static void handle_start_drag(struct wl_listener *listener, void *data) {
 | 
				
			||||||
		wl_list_insert(&root->drag_icons, &icon->link);
 | 
							wl_list_insert(&root->drag_icons, &icon->link);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		drag_icon_update_position(icon);
 | 
							drag_icon_update_position(icon);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	seatop_begin_default(seat);
 | 
						seatop_begin_default(seat);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue