mirror of
				https://github.com/labwc/labwc.git
				synced 2025-11-03 09:01:51 -05:00 
			
		
		
		
	view: try to honor original geometry with layout changes
Whenever the output layout changes, each view's original geometry will be captured as last_layout_geometry (if it has not already been captured by a previous layout change), which will remain valid unless the user modifies the view's geometry (i.e., by tiling, maximizing, moving, resizing or full-screening). On subsequent output layout changes, views with valid last_layout_geometry will be back to their original position if possible, or else to the closest possible output.
This commit is contained in:
		
							parent
							
								
									1b5af86402
								
							
						
					
					
						commit
						c229f6edc0
					
				
					 3 changed files with 156 additions and 19 deletions
				
			
		| 
						 | 
				
			
			@ -70,6 +70,7 @@ interactive_begin(struct view *view, enum input_mode mode, uint32_t edges)
 | 
			
		|||
		} else {
 | 
			
		||||
			/* Store natural geometry at start of move */
 | 
			
		||||
			view_store_natural_geometry(view);
 | 
			
		||||
			view_invalidate_last_layout_geometry(view);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		/* Prevent region snapping when just moving via A-Left mousebind */
 | 
			
		||||
| 
						 | 
				
			
			@ -86,6 +87,13 @@ interactive_begin(struct view *view, enum input_mode mode, uint32_t edges)
 | 
			
		|||
			 */
 | 
			
		||||
			return;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		/*
 | 
			
		||||
		 * Resizing overrides any attempt to restore window
 | 
			
		||||
		 * geometries altered by layout changes.
 | 
			
		||||
		 */
 | 
			
		||||
		view_invalidate_last_layout_geometry(view);
 | 
			
		||||
 | 
			
		||||
		/*
 | 
			
		||||
		 * If tiled or maximized in only one direction, reset
 | 
			
		||||
		 * tiled/maximized state but keep the same geometry as
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue