mirror of
				https://gitlab.freedesktop.org/wayland/wayland.git
				synced 2025-11-03 09:01:42 -05:00 
			
		
		
		
	Update compositor initiated resize to use a 3x3 grid
This lets us do all combinations of resize edges.
This commit is contained in:
		
							parent
							
								
									5a2218aa15
								
							
						
					
					
						commit
						181f52ea96
					
				
					 1 changed files with 10 additions and 2 deletions
				
			
		| 
						 | 
					@ -773,6 +773,7 @@ notify_button(struct wl_input_device *device,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	surface = (struct wlsc_surface *) device->pointer_focus;
 | 
						surface = (struct wlsc_surface *) device->pointer_focus;
 | 
				
			||||||
	uint32_t edges = 0;
 | 
						uint32_t edges = 0;
 | 
				
			||||||
 | 
						int32_t x, y;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (state && surface && device->grab == NULL) {
 | 
						if (state && surface && device->grab == NULL) {
 | 
				
			||||||
		wlsc_surface_raise(surface);
 | 
							wlsc_surface_raise(surface);
 | 
				
			||||||
| 
						 | 
					@ -797,13 +798,20 @@ notify_button(struct wl_input_device *device,
 | 
				
			||||||
	else if (state && surface && button == BTN_MIDDLE &&
 | 
						else if (state && surface && button == BTN_MIDDLE &&
 | 
				
			||||||
		 (wd->modifier_state & MODIFIER_SUPER)) {
 | 
							 (wd->modifier_state & MODIFIER_SUPER)) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if ((device->grab_x - surface->x) < surface->width / 2)
 | 
							x = device->grab_x - surface->x;
 | 
				
			||||||
 | 
							y = device->grab_y - surface->y;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (x < surface->width / 3)
 | 
				
			||||||
			edges |= WL_SHELL_RESIZE_LEFT;
 | 
								edges |= WL_SHELL_RESIZE_LEFT;
 | 
				
			||||||
 | 
							else if (x < 2 * surface->width / 3)
 | 
				
			||||||
 | 
								edges |= 0;
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
			edges |= WL_SHELL_RESIZE_RIGHT;
 | 
								edges |= WL_SHELL_RESIZE_RIGHT;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if ((device->grab_y - surface->y) < surface->height / 2)
 | 
							if (y < surface->height / 3)
 | 
				
			||||||
			edges |= WL_SHELL_RESIZE_TOP;
 | 
								edges |= WL_SHELL_RESIZE_TOP;
 | 
				
			||||||
 | 
							else if (y < 2 * surface->height / 3)
 | 
				
			||||||
 | 
								edges |= 0;
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
			edges |= WL_SHELL_RESIZE_BOTTOM;
 | 
								edges |= WL_SHELL_RESIZE_BOTTOM;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue