mirror of
				https://gitlab.freedesktop.org/wlroots/wlroots.git
				synced 2025-11-03 09:01:40 -05:00 
			
		
		
		
	store xdg-positioner properties on the popup
This commit is contained in:
		
							parent
							
								
									efa9eeb5d5
								
							
						
					
					
						commit
						8836b167bf
					
				
					 2 changed files with 66 additions and 0 deletions
				
			
		| 
						 | 
					@ -32,6 +32,62 @@ struct wlr_xdg_client_v6 {
 | 
				
			||||||
	struct wl_event_source *ping_timer;
 | 
						struct wl_event_source *ping_timer;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					enum wlr_positioner_v6_anchor {
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * the center of the anchor rectangle
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						WLR_POSITIONER_V6_ANCHOR_NONE = 0,
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * the top edge of the anchor rectangle
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						WLR_POSITIONER_V6_ANCHOR_TOP = 1,
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * the bottom edge of the anchor rectangle
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						WLR_POSITIONER_V6_ANCHOR_BOTTOM = 2,
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * the left edge of the anchor rectangle
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						WLR_POSITIONER_V6_ANCHOR_LEFT = 4,
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * the right edge of the anchor rectangle
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						WLR_POSITIONER_V6_ANCHOR_RIGHT = 8,
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					enum wlr_positioner_v6_gravity {
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * center over the anchor edge
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						WLR_POSITIONER_V6_GRAVITY_NONE = 0,
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * position above the anchor edge
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						WLR_POSITIONER_V6_GRAVITY_TOP = 1,
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * position below the anchor edge
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						WLR_POSITIONER_V6_GRAVITY_BOTTOM = 2,
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * position to the left of the anchor edge
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						WLR_POSITIONER_V6_GRAVITY_LEFT = 4,
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * position to the right of the anchor edge
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						WLR_POSITIONER_V6_GRAVITY_RIGHT = 8,
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					enum wlr_positioner_v6_constraint_adjustment {
 | 
				
			||||||
 | 
						WLR_POSITIONER_V6_CONSTRAINT_ADJUSTMENT_NONE = 0,
 | 
				
			||||||
 | 
						WLR_POSITIONER_V6_CONSTRAINT_ADJUSTMENT_SLIDE_X = 1,
 | 
				
			||||||
 | 
						WLR_POSITIONER_V6_CONSTRAINT_ADJUSTMENT_SLIDE_Y = 2,
 | 
				
			||||||
 | 
						WLR_POSITIONER_V6_CONSTRAINT_ADJUSTMENT_FLIP_X = 4,
 | 
				
			||||||
 | 
						WLR_POSITIONER_V6_CONSTRAINT_ADJUSTMENT_FLIP_Y = 8,
 | 
				
			||||||
 | 
						WLR_POSITIONER_V6_CONSTRAINT_ADJUSTMENT_RESIZE_X = 16,
 | 
				
			||||||
 | 
						WLR_POSITIONER_V6_CONSTRAINT_ADJUSTMENT_RESIZE_Y = 32,
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct wlr_xdg_popup_v6 {
 | 
					struct wlr_xdg_popup_v6 {
 | 
				
			||||||
	struct wlr_xdg_surface_v6 *base;
 | 
						struct wlr_xdg_surface_v6 *base;
 | 
				
			||||||
	struct wl_list link;
 | 
						struct wl_list link;
 | 
				
			||||||
| 
						 | 
					@ -42,6 +98,10 @@ struct wlr_xdg_popup_v6 {
 | 
				
			||||||
	struct wlr_seat *seat;
 | 
						struct wlr_seat *seat;
 | 
				
			||||||
	struct wlr_box geometry;
 | 
						struct wlr_box geometry;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						enum wlr_positioner_v6_anchor anchor;
 | 
				
			||||||
 | 
						enum wlr_positioner_v6_gravity gravity;
 | 
				
			||||||
 | 
						enum wlr_positioner_v6_constraint_adjustment constraint_adjustment;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	struct wl_list grab_link; // wlr_xdg_popup_grab_v6::popups
 | 
						struct wl_list grab_link; // wlr_xdg_popup_grab_v6::popups
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -537,6 +537,12 @@ static void xdg_surface_get_popup(struct wl_client *client,
 | 
				
			||||||
	surface->popup_state->parent = parent;
 | 
						surface->popup_state->parent = parent;
 | 
				
			||||||
	surface->popup_state->geometry =
 | 
						surface->popup_state->geometry =
 | 
				
			||||||
		xdg_positioner_get_geometry(positioner, surface, parent);
 | 
							xdg_positioner_get_geometry(positioner, surface, parent);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// positioner properties
 | 
				
			||||||
 | 
						surface->popup_state->anchor = (uint32_t)positioner->anchor;
 | 
				
			||||||
 | 
						surface->popup_state->gravity = (uint32_t)positioner->gravity;
 | 
				
			||||||
 | 
						surface->popup_state->constraint_adjustment = (uint32_t)positioner->constraint_adjustment;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	wl_list_insert(&parent->popups, &surface->popup_state->link);
 | 
						wl_list_insert(&parent->popups, &surface->popup_state->link);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	wl_resource_set_implementation(surface->popup_state->resource,
 | 
						wl_resource_set_implementation(surface->popup_state->resource,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue