| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -86,8 +86,9 @@ static void     meta_window_show          (MetaWindow     *window);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				static void     meta_window_hide          (MetaWindow     *window);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				static void     meta_window_save_rect         (MetaWindow    *window);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				static void     save_user_window_placement    (MetaWindow    *window);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				static void     force_save_user_window_placement (MetaWindow    *window);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				static void     save_user_window_placement    (MetaWindow    *window,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                                               MetaRectangle *rect,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                                               gboolean       force);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				static void meta_window_move_resize_internal (MetaWindow         *window,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                                              MetaMoveResizeFlags flags,
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -3041,42 +3042,39 @@ meta_window_save_rect (MetaWindow *window)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				/**
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 * force_save_user_window_placement:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 * @window: Store current position of this window for future reference
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 *
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 * Save the user_rect regardless of whether the window is maximized or
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 * fullscreen. See save_user_window_placement() for most uses.
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 */
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				static void
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				force_save_user_window_placement (MetaWindow *window)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				{
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  meta_window_get_client_root_coords (window, &window->user_rect);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				/**
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				/*
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 * save_user_window_placement:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 * @window: Store current position of this window for future reference
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 *
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 * Save the user_rect, but only if the window is neither maximized nor
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 * fullscreen, otherwise the window may snap back to those dimensions
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 * (bug #461927).
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 * @rect: the rectangle with the position we want (in case it's not yet
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 *        assumed by the window, which happens for wayland resizes), or
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 *        %NULL to use the current window position
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 * @force: save the user_rect regardless of whether the window is maximized or
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 *         fullscreen
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				 */
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				static void
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				save_user_window_placement (MetaWindow *window)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				save_user_window_placement (MetaWindow    *window,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                            MetaRectangle *rect,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                            gboolean       force)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				{
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  if (!(META_WINDOW_MAXIMIZED (window) || META_WINDOW_TILED_SIDE_BY_SIDE (window) || window->fullscreen))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  gboolean should_save = !META_WINDOW_MAXIMIZED (window) &&
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    !META_WINDOW_TILED_SIDE_BY_SIDE (window) &&
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    !window->fullscreen;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  if (force || should_save)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    {
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      MetaRectangle user_rect;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      meta_window_get_client_root_coords (window, &user_rect);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      if (rect)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        user_rect = *rect;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      else
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        meta_window_get_client_root_coords (window, &user_rect);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      if (!window->maximized_horizontally)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      if (force || !window->maximized_horizontally)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					{
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					  window->user_rect.x     = user_rect.x;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					  window->user_rect.width = user_rect.width;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      if (!window->maximized_vertically)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      if (force || !window->maximized_vertically)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					{
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					  window->user_rect.y      = user_rect.y;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					  window->user_rect.height = user_rect.height;
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -3586,7 +3584,7 @@ meta_window_unmaximize_internal (MetaWindow        *window,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      /* Make sure user_rect is current.
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       */
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      force_save_user_window_placement (window);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      save_user_window_placement (window, NULL, TRUE);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      /* When we unmaximize, if we're doing a mouse move also we could
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       * get the window suddenly jumping to the upper left corner of
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -3763,7 +3761,7 @@ meta_window_unmake_fullscreen (MetaWindow  *window)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      /* Make sure user_rect is current.
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       */
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      force_save_user_window_placement (window);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      save_user_window_placement (window, NULL, TRUE);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      meta_window_update_layer (window);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -4593,73 +4591,29 @@ meta_window_move_resize_internal (MetaWindow          *window,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       * it can be for maximized or fullscreen.
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       *
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				       */
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      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;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          meta_rectangle_resize_with_gravity (&old_rect,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                                              &client_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 (deltax != dx || deltay != dy)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            need_move_client = TRUE;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          window->rect.x += (deltax - dx);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          window->rect.y += (deltay - dy);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          if (!is_wayland_resize)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            /* Politely ask for a new size, and wait until the next commit. */
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            meta_wayland_surface_configure_notify (window->surface,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                                                   new_rect.width,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                                                   new_rect.height);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          /* We need to update window->rect here, otherwise all sorts of
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				             bad stuff happens with interactive resizes... */
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          need_resize_client = TRUE;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				          meta_wayland_surface_configure_notify (window->surface,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                                                 new_rect.width,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                                                 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;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      window->rect.width = new_rect.width;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				      window->rect.height = new_rect.height;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  else
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    {
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -4971,9 +4925,9 @@ meta_window_move_resize_internal (MetaWindow          *window,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    }
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  if (!window->placed && window->force_save_user_rect && !window->fullscreen)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    force_save_user_window_placement (window);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    save_user_window_placement (window, &new_rect, TRUE);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  else if (is_user_action)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    save_user_window_placement (window);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    save_user_window_placement (window, &new_rect, FALSE);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  if (need_move_client || need_move_frame)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    g_signal_emit (window, window_signals[POSITION_CHANGED], 0);
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -5074,10 +5028,10 @@ meta_window_move_resize_wayland (MetaWindow *window,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  meta_window_get_position (window, &x, &y);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  x += dx; y += dy;
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  if (x != window->expected_rect.x || y != window->expected_rect.y)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  if (x != window->rect.x || y != window->rect.y)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    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,
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -6344,7 +6298,7 @@ meta_window_move_resize_request (MetaWindow *window,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				   *
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				   * See also bug 426519.
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				   */
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  save_user_window_placement (window);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  save_user_window_placement (window, NULL, FALSE);
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				}
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				/*
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				 
 |