| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -4596,70 +4596,34 @@ meta_window_move_resize_internal (MetaWindow          *window,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      root_x_nw = new_rect.x;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      root_y_nw = new_rect.y;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      /* First, save where we would like the client to be. This is used by the next
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       * attach to determine if the client is really moving/resizing or not.
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       */
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      window->expected_rect = new_rect;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      if (is_wayland_resize)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          /* This is a call to wl_surface_commit(), ignore the new_rect and
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				           * update the real client size to match the buffer size.
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				           */
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          window->rect.width = w;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          window->rect.height = h;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      if (new_rect.width != window->rect.width ||
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          new_rect.height != window->rect.height)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          /* We need to resize the client. Resizing is in two parts:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				           * some of the movement happens immediately, and some happens as part
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				           * of the resizing (through dx/dy in wl_surface_attach).
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				           *
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				           * To do so, we need to compute the resize from the point of the view
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				           * of the client, and then adjust the immediate resize to match.
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				           *
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				           * dx/dy are the values we expect from the new attach(), while deltax/
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				           * deltay reflect the overall movement.
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				           */
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          MetaRectangle client_rect;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          int dx, dy;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          int deltax, deltay;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          if (!is_wayland_resize)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            meta_wayland_surface_configure_notify (window->surface,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                                                   new_rect.width,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                                                   new_rect.height);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          meta_rectangle_resize_with_gravity (&old_rect,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                                              &client_rect,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                                              &new_rect,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                                              gravity,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                                              new_rect.width,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                                              new_rect.height);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          deltax = new_rect.x - old_rect.x;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          deltay = new_rect.y - old_rect.y;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          dx = client_rect.x - old_rect.x;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          dy = client_rect.y - old_rect.y;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          if (window->rect.width != new_rect.width ||
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				              window->rect.height != new_rect.height)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            need_resize_client = TRUE;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          if (deltax != dx || deltay != dy)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            need_move_client = TRUE;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          window->rect.x += (deltax - dx);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          window->rect.y += (deltay - dy);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          need_resize_client = TRUE;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          meta_wayland_surface_configure_notify (window->surface,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                                                 new_rect.width,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                                                 new_rect.height);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          window->rect.width = new_rect.width;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          window->rect.height = new_rect.height;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      else
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          /* No resize happening, we can just move the window and live with it. */
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          if (window->rect.x != new_rect.x ||
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				              window->rect.y != new_rect.y)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            need_move_client = TRUE;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          window->rect.x = new_rect.x;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          window->rect.y = new_rect.y;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      if (window->rect.x != new_rect.x ||
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          window->rect.y != new_rect.y)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        need_move_client = TRUE;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      window->rect.x = new_rect.x;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      window->rect.y = new_rect.y;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  else
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    {
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -5071,13 +5035,12 @@ meta_window_move_resize_wayland (MetaWindow *window,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  flags = META_IS_WAYLAND_RESIZE;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  meta_window_get_position (window, &x, &y);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  x += dx; y += dy;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  x = window->rect.x + dx;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  y = window->rect.y + dy;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  if (x != window->expected_rect.x || y != window->expected_rect.y)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  if (dx != 0 || dy != 0)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    flags |= META_IS_MOVE_ACTION;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  if (width != window->expected_rect.width ||
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      height != window->expected_rect.height)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  if (width != window->rect.width || height != window->rect.height)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    flags |= META_IS_RESIZE_ACTION;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  meta_window_move_resize_internal (window, flags, NorthWestGravity,
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				 
 |