mirror of
				https://github.com/labwc/labwc.git
				synced 2025-10-29 05:40:24 -04:00 
			
		
		
		
	view: Set view->output prior to calling view_center()
This commit is contained in:
		
							parent
							
								
									bdbbbb2e62
								
							
						
					
					
						commit
						a9cbbe1e41
					
				
					 4 changed files with 16 additions and 19 deletions
				
			
		|  | @ -131,9 +131,7 @@ void view_moved(struct view *view); | |||
| void view_minimize(struct view *view, bool minimized); | ||||
| struct output *view_output(struct view *view); | ||||
| void view_store_natural_geometry(struct view *view); | ||||
| /* output is optional, defaults to current nearest output */ | ||||
| void view_center(struct view *view, struct output *output, | ||||
| 	const struct wlr_box *ref); | ||||
| void view_center(struct view *view, const struct wlr_box *ref); | ||||
| void view_restore_to(struct view *view, struct wlr_box geometry); | ||||
| void view_set_untiled(struct view *view); | ||||
| void view_maximize(struct view *view, bool maximize, | ||||
|  |  | |||
							
								
								
									
										24
									
								
								src/view.c
									
										
									
									
									
								
							
							
						
						
									
										24
									
								
								src/view.c
									
										
									
									
									
								
							|  | @ -254,18 +254,16 @@ view_minimize(struct view *view, bool minimized) | |||
| } | ||||
| 
 | ||||
| static bool | ||||
| view_compute_centered_position(struct view *view, struct output *output, | ||||
| 		const struct wlr_box *ref, int w, int h, int *x, int *y) | ||||
| view_compute_centered_position(struct view *view, const struct wlr_box *ref, | ||||
| 		int w, int h, int *x, int *y) | ||||
| { | ||||
| 	if (w <= 0 || h <= 0) { | ||||
| 		wlr_log(WLR_ERROR, "view has empty geometry, not centering"); | ||||
| 		return false; | ||||
| 	} | ||||
| 	struct output *output = view_output(view); | ||||
| 	if (!output_is_usable(output)) { | ||||
| 		output = view_output(view); | ||||
| 		if (!output_is_usable(output)) { | ||||
| 			return false; | ||||
| 		} | ||||
| 		return false; | ||||
| 	} | ||||
| 
 | ||||
| 	struct border margin = ssd_get_margin(view->ssd); | ||||
|  | @ -299,7 +297,7 @@ set_fallback_geometry(struct view *view) | |||
| { | ||||
| 	view->natural_geometry.width = LAB_FALLBACK_WIDTH; | ||||
| 	view->natural_geometry.height = LAB_FALLBACK_HEIGHT; | ||||
| 	view_compute_centered_position(view, NULL, NULL, | ||||
| 	view_compute_centered_position(view, NULL, | ||||
| 		view->natural_geometry.width, | ||||
| 		view->natural_geometry.height, | ||||
| 		&view->natural_geometry.x, | ||||
|  | @ -331,12 +329,12 @@ view_store_natural_geometry(struct view *view) | |||
| } | ||||
| 
 | ||||
| void | ||||
| view_center(struct view *view, struct output *output, const struct wlr_box *ref) | ||||
| view_center(struct view *view, const struct wlr_box *ref) | ||||
| { | ||||
| 	assert(view); | ||||
| 	int x, y; | ||||
| 	if (view_compute_centered_position(view, output, ref, | ||||
| 			view->pending.width, view->pending.height, &x, &y)) { | ||||
| 	if (view_compute_centered_position(view, ref, view->pending.width, | ||||
| 			view->pending.height, &x, &y)) { | ||||
| 		view_move(view, x, y); | ||||
| 	} | ||||
| } | ||||
|  | @ -352,8 +350,8 @@ view_apply_natural_geometry(struct view *view) | |||
| 	} else { | ||||
| 		/* reposition if original geometry is offscreen */ | ||||
| 		struct wlr_box box = view->natural_geometry; | ||||
| 		if (view_compute_centered_position(view, NULL, NULL, | ||||
| 				box.width, box.height, &box.x, &box.y)) { | ||||
| 		if (view_compute_centered_position(view, NULL, box.width, | ||||
| 				box.height, &box.x, &box.y)) { | ||||
| 			view_move_resize(view, box); | ||||
| 		} | ||||
| 	} | ||||
|  | @ -777,7 +775,7 @@ view_adjust_for_layout_change(struct view *view) | |||
| 			if (!wlr_output_layout_intersects( | ||||
| 					view->server->output_layout, | ||||
| 					NULL, &view->pending)) { | ||||
| 				view_center(view, NULL, NULL); | ||||
| 				view_center(view, NULL); | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
|  |  | |||
|  | @ -306,7 +306,7 @@ position_xdg_toplevel_view(struct view *view) | |||
| 		xdg_toplevel_from_view(view)->parent; | ||||
| 
 | ||||
| 	if (!parent_xdg_toplevel) { | ||||
| 		view_center(view, output_nearest_to_cursor(view->server), NULL); | ||||
| 		view_center(view, NULL); | ||||
| 	} else { | ||||
| 		/*
 | ||||
| 		 * If child-toplevel-views, we center-align relative to their | ||||
|  | @ -315,7 +315,8 @@ position_xdg_toplevel_view(struct view *view) | |||
| 		struct view *parent = lookup_view_by_xdg_toplevel( | ||||
| 			view->server, parent_xdg_toplevel); | ||||
| 		assert(parent); | ||||
| 		view_center(view, view_output(parent), &parent->pending); | ||||
| 		view->output = view_output(parent); | ||||
| 		view_center(view, &parent->pending); | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -400,7 +400,7 @@ set_initial_position(struct view *view, | |||
| 		/* Just make sure the view is on-screen */ | ||||
| 		view_adjust_for_layout_change(view); | ||||
| 	} else { | ||||
| 		view_center(view, output_nearest_to_cursor(view->server), NULL); | ||||
| 		view_center(view, NULL); | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 John Lindgren
						John Lindgren