mirror of
				https://github.com/labwc/labwc.git
				synced 2025-11-03 09:01:51 -05:00 
			
		
		
		
	src/view.c: factor out the various view_apply_ variants
This commit is contained in:
		
							parent
							
								
									84b3df4ef2
								
							
						
					
					
						commit
						03a1953cfa
					
				
					 1 changed files with 20 additions and 26 deletions
				
			
		
							
								
								
									
										44
									
								
								src/view.c
									
										
									
									
									
								
							
							
						
						
									
										44
									
								
								src/view.c
									
										
									
									
									
								
							| 
						 | 
					@ -419,6 +419,19 @@ view_apply_maximized_geometry(struct view *view)
 | 
				
			||||||
	view_move_resize(view, box);
 | 
						view_move_resize(view, box);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static bool
 | 
				
			||||||
 | 
					view_apply_special_geometry(struct view *view)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						if (view->maximized) {
 | 
				
			||||||
 | 
							view_apply_maximized_geometry(view);
 | 
				
			||||||
 | 
						} else if (view->tiled) {
 | 
				
			||||||
 | 
							view_apply_tiled_geometry(view, NULL);
 | 
				
			||||||
 | 
						} else {
 | 
				
			||||||
 | 
							return false;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return true;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void
 | 
					static void
 | 
				
			||||||
view_apply_unmaximized_geometry(struct view *view)
 | 
					view_apply_unmaximized_geometry(struct view *view)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
| 
						 | 
					@ -485,7 +498,6 @@ view_maximize(struct view *view, bool maximize, bool store_natural_geometry)
 | 
				
			||||||
	if (view->fullscreen) {
 | 
						if (view->fullscreen) {
 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	set_maximized(view, maximize);
 | 
					 | 
				
			||||||
	if (maximize) {
 | 
						if (maximize) {
 | 
				
			||||||
		/*
 | 
							/*
 | 
				
			||||||
		 * Maximize via keybind or client request cancels
 | 
							 * Maximize via keybind or client request cancels
 | 
				
			||||||
| 
						 | 
					@ -496,14 +508,10 @@ view_maximize(struct view *view, bool maximize, bool store_natural_geometry)
 | 
				
			||||||
		if (!view->tiled && store_natural_geometry) {
 | 
							if (!view->tiled && store_natural_geometry) {
 | 
				
			||||||
			view_store_natural_geometry(view);
 | 
								view_store_natural_geometry(view);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		view_apply_maximized_geometry(view);
 | 
					 | 
				
			||||||
	} else {
 | 
					 | 
				
			||||||
		/* unmaximize */
 | 
					 | 
				
			||||||
		if (view->tiled) {
 | 
					 | 
				
			||||||
			view_apply_tiled_geometry(view, NULL);
 | 
					 | 
				
			||||||
		} else {
 | 
					 | 
				
			||||||
			view_apply_unmaximized_geometry(view);
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						set_maximized(view, maximize);
 | 
				
			||||||
 | 
						if (!view_apply_special_geometry(view)) {
 | 
				
			||||||
 | 
							view_apply_unmaximized_geometry(view);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -587,11 +595,7 @@ view_set_decorations(struct view *view, bool decorations)
 | 
				
			||||||
		} else {
 | 
							} else {
 | 
				
			||||||
			undecorate(view);
 | 
								undecorate(view);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if (view->maximized) {
 | 
							view_apply_special_geometry(view);
 | 
				
			||||||
			view_apply_maximized_geometry(view);
 | 
					 | 
				
			||||||
		} else if (view->tiled) {
 | 
					 | 
				
			||||||
			view_apply_tiled_geometry(view, NULL);
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -643,11 +647,7 @@ view_set_fullscreen(struct view *view, bool fullscreen,
 | 
				
			||||||
			decorate(view);
 | 
								decorate(view);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		/* Restore non-fullscreen geometry */
 | 
							/* Restore non-fullscreen geometry */
 | 
				
			||||||
		if (view->maximized) {
 | 
							if (!view_apply_special_geometry(view)) {
 | 
				
			||||||
			view_apply_maximized_geometry(view);
 | 
					 | 
				
			||||||
		} else if (view->tiled) {
 | 
					 | 
				
			||||||
			view_apply_tiled_geometry(view, NULL);
 | 
					 | 
				
			||||||
		} else {
 | 
					 | 
				
			||||||
			view_apply_unmaximized_geometry(view);
 | 
								view_apply_unmaximized_geometry(view);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
| 
						 | 
					@ -675,13 +675,7 @@ view_adjust_for_layout_change(struct view *view)
 | 
				
			||||||
			/* output is gone, exit fullscreen */
 | 
								/* output is gone, exit fullscreen */
 | 
				
			||||||
			view_set_fullscreen(view, false, NULL);
 | 
								view_set_fullscreen(view, false, NULL);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	} else if (view->maximized) {
 | 
						} else if (!view_apply_special_geometry(view)) {
 | 
				
			||||||
		/* recompute maximized geometry */
 | 
					 | 
				
			||||||
		view_apply_maximized_geometry(view);
 | 
					 | 
				
			||||||
	} else if (view->tiled) {
 | 
					 | 
				
			||||||
		/* recompute tiled geometry */
 | 
					 | 
				
			||||||
		view_apply_tiled_geometry(view, NULL);
 | 
					 | 
				
			||||||
	} else {
 | 
					 | 
				
			||||||
		/* reposition view if it's offscreen */
 | 
							/* reposition view if it's offscreen */
 | 
				
			||||||
		struct wlr_box box = { view->x, view->y, view->w, view->h };
 | 
							struct wlr_box box = { view->x, view->y, view->w, view->h };
 | 
				
			||||||
		if (!wlr_output_layout_intersects(layout, NULL, &box)) {
 | 
							if (!wlr_output_layout_intersects(layout, NULL, &box)) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue