mirror of
				https://github.com/swaywm/sway.git
				synced 2025-11-03 09:01:43 -05:00 
			
		
		
		
	Don't use wlr_output properties
These properties are before rotation.
This commit is contained in:
		
							parent
							
								
									7586f150c0
								
							
						
					
					
						commit
						acc2628c79
					
				
					 10 changed files with 47 additions and 39 deletions
				
			
		| 
						 | 
					@ -28,6 +28,9 @@ struct sway_output {
 | 
				
			||||||
	struct timespec last_frame;
 | 
						struct timespec last_frame;
 | 
				
			||||||
	struct wlr_output_damage *damage;
 | 
						struct wlr_output_damage *damage;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						int lx, ly;
 | 
				
			||||||
 | 
						int width, height;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	bool enabled;
 | 
						bool enabled;
 | 
				
			||||||
	list_t *workspaces;
 | 
						list_t *workspaces;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -43,10 +43,10 @@ static char *get_string(struct sway_node *node) {
 | 
				
			||||||
	case N_OUTPUT:
 | 
						case N_OUTPUT:
 | 
				
			||||||
		snprintf(buffer, 512, "N_OUTPUT id:%zd '%s' %dx%d@%d,%d", node->id,
 | 
							snprintf(buffer, 512, "N_OUTPUT id:%zd '%s' %dx%d@%d,%d", node->id,
 | 
				
			||||||
				node->sway_output->wlr_output->name,
 | 
									node->sway_output->wlr_output->name,
 | 
				
			||||||
				node->sway_output->wlr_output->width,
 | 
									node->sway_output->width,
 | 
				
			||||||
				node->sway_output->wlr_output->height,
 | 
									node->sway_output->height,
 | 
				
			||||||
				node->sway_output->wlr_output->lx,
 | 
									node->sway_output->lx,
 | 
				
			||||||
				node->sway_output->wlr_output->ly);
 | 
									node->sway_output->ly);
 | 
				
			||||||
		break;
 | 
							break;
 | 
				
			||||||
	case N_WORKSPACE:
 | 
						case N_WORKSPACE:
 | 
				
			||||||
		snprintf(buffer, 512, "N_WORKSPACE id:%zd '%s' %s %dx%d@%.f,%.f",
 | 
							snprintf(buffer, 512, "N_WORKSPACE id:%zd '%s' %s %dx%d@%.f,%.f",
 | 
				
			||||||
| 
						 | 
					@ -128,11 +128,11 @@ void update_debug_tree() {
 | 
				
			||||||
	int width = 640, height = 480;
 | 
						int width = 640, height = 480;
 | 
				
			||||||
	for (int i = 0; i < root->outputs->length; ++i) {
 | 
						for (int i = 0; i < root->outputs->length; ++i) {
 | 
				
			||||||
		struct sway_output *output = root->outputs->items[i];
 | 
							struct sway_output *output = root->outputs->items[i];
 | 
				
			||||||
		if (output->wlr_output->width > width) {
 | 
							if (output->width > width) {
 | 
				
			||||||
			width = output->wlr_output->width;
 | 
								width = output->width;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if (output->wlr_output->height > height) {
 | 
							if (output->height > height) {
 | 
				
			||||||
			height = output->wlr_output->height;
 | 
								height = output->height;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	cairo_surface_t *surface =
 | 
						cairo_surface_t *surface =
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -98,8 +98,8 @@ static bool get_surface_box(struct surface_iterator_data *data,
 | 
				
			||||||
	wlr_box_rotated_bounds(&box, data->rotation, &rotated_box);
 | 
						wlr_box_rotated_bounds(&box, data->rotation, &rotated_box);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	struct wlr_box output_box = {
 | 
						struct wlr_box output_box = {
 | 
				
			||||||
		.width = output->wlr_output->width,
 | 
							.width = output->width,
 | 
				
			||||||
		.height = output->wlr_output->height,
 | 
							.height = output->height,
 | 
				
			||||||
	};
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	struct wlr_box intersection;
 | 
						struct wlr_box intersection;
 | 
				
			||||||
| 
						 | 
					@ -249,8 +249,8 @@ bool output_has_opaque_overlay_layer_surface(struct sway_output *output) {
 | 
				
			||||||
		struct sway_layer_surface *sway_layer_surface =
 | 
							struct sway_layer_surface *sway_layer_surface =
 | 
				
			||||||
			layer_from_wlr_layer_surface(wlr_layer_surface);
 | 
								layer_from_wlr_layer_surface(wlr_layer_surface);
 | 
				
			||||||
		pixman_box32_t output_box = {
 | 
							pixman_box32_t output_box = {
 | 
				
			||||||
			.x2 = output->wlr_output->width,
 | 
								.x2 = output->width,
 | 
				
			||||||
			.y2 = output->wlr_output->height,
 | 
								.y2 = output->height,
 | 
				
			||||||
		};
 | 
							};
 | 
				
			||||||
		pixman_region32_t surface_opaque_box;
 | 
							pixman_region32_t surface_opaque_box;
 | 
				
			||||||
		pixman_region32_init(&surface_opaque_box);
 | 
							pixman_region32_init(&surface_opaque_box);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -238,8 +238,8 @@ static void render_saved_view(struct sway_view *view,
 | 
				
			||||||
	};
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	struct wlr_box output_box = {
 | 
						struct wlr_box output_box = {
 | 
				
			||||||
		.width = output->wlr_output->width,
 | 
							.width = output->width,
 | 
				
			||||||
		.height = output->wlr_output->height,
 | 
							.height = output->height,
 | 
				
			||||||
	};
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	struct wlr_box intersection;
 | 
						struct wlr_box intersection;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -59,10 +59,10 @@ static void popup_unconstrain(struct sway_xdg_popup *popup) {
 | 
				
			||||||
	// the output box expressed in the coordinate system of the toplevel parent
 | 
						// the output box expressed in the coordinate system of the toplevel parent
 | 
				
			||||||
	// of the popup
 | 
						// of the popup
 | 
				
			||||||
	struct wlr_box output_toplevel_sx_box = {
 | 
						struct wlr_box output_toplevel_sx_box = {
 | 
				
			||||||
		.x = output->wlr_output->lx - view->x,
 | 
							.x = output->lx - view->x,
 | 
				
			||||||
		.y = output->wlr_output->ly - view->y,
 | 
							.y = output->ly - view->y,
 | 
				
			||||||
		.width = output->wlr_output->width,
 | 
							.width = output->width,
 | 
				
			||||||
		.height = output->wlr_output->height,
 | 
							.height = output->height,
 | 
				
			||||||
	};
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	wlr_xdg_popup_unconstrain_from_box(wlr_popup, &output_toplevel_sx_box);
 | 
						wlr_xdg_popup_unconstrain_from_box(wlr_popup, &output_toplevel_sx_box);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -58,10 +58,10 @@ static void popup_unconstrain(struct sway_xdg_popup_v6 *popup) {
 | 
				
			||||||
	// the output box expressed in the coordinate system of the toplevel parent
 | 
						// the output box expressed in the coordinate system of the toplevel parent
 | 
				
			||||||
	// of the popup
 | 
						// of the popup
 | 
				
			||||||
	struct wlr_box output_toplevel_sx_box = {
 | 
						struct wlr_box output_toplevel_sx_box = {
 | 
				
			||||||
		.x = output->wlr_output->lx - view->x,
 | 
							.x = output->lx - view->x,
 | 
				
			||||||
		.y = output->wlr_output->ly - view->y,
 | 
							.y = output->ly - view->y,
 | 
				
			||||||
		.width = output->wlr_output->width,
 | 
							.width = output->width,
 | 
				
			||||||
		.height = output->wlr_output->height,
 | 
							.height = output->height,
 | 
				
			||||||
	};
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	wlr_xdg_popup_v6_unconstrain_from_box(wlr_popup, &output_toplevel_sx_box);
 | 
						wlr_xdg_popup_v6_unconstrain_from_box(wlr_popup, &output_toplevel_sx_box);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -219,8 +219,8 @@ void arrange_workspace(struct sway_workspace *workspace) {
 | 
				
			||||||
		struct sway_container *fs = workspace->fullscreen;
 | 
							struct sway_container *fs = workspace->fullscreen;
 | 
				
			||||||
		fs->x = output->wlr_output->lx;
 | 
							fs->x = output->wlr_output->lx;
 | 
				
			||||||
		fs->y = output->wlr_output->ly;
 | 
							fs->y = output->wlr_output->ly;
 | 
				
			||||||
		fs->width = output->wlr_output->width;
 | 
							fs->width = output->width;
 | 
				
			||||||
		fs->height = output->wlr_output->height;
 | 
							fs->height = output->height;
 | 
				
			||||||
		arrange_container(fs);
 | 
							arrange_container(fs);
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
		struct wlr_box box;
 | 
							struct wlr_box box;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -75,6 +75,11 @@ void output_enable(struct sway_output *output, struct output_config *oc) {
 | 
				
			||||||
	apply_output_config(oc, output);
 | 
						apply_output_config(oc, output);
 | 
				
			||||||
	list_add(root->outputs, output);
 | 
						list_add(root->outputs, output);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						output->lx = wlr_output->lx;
 | 
				
			||||||
 | 
						output->ly = wlr_output->ly;
 | 
				
			||||||
 | 
						wlr_output_transformed_resolution(wlr_output,
 | 
				
			||||||
 | 
								&output->width, &output->height);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	restore_workspaces(output);
 | 
						restore_workspaces(output);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!output->workspaces->length) {
 | 
						if (!output->workspaces->length) {
 | 
				
			||||||
| 
						 | 
					@ -265,8 +270,8 @@ struct sway_output *output_get_in_direction(struct sway_output *reference,
 | 
				
			||||||
				"got invalid direction: %d", direction)) {
 | 
									"got invalid direction: %d", direction)) {
 | 
				
			||||||
		return NULL;
 | 
							return NULL;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	int lx = reference->wlr_output->lx + reference->wlr_output->width / 2;
 | 
						int lx = reference->wlr_output->lx + reference->width / 2;
 | 
				
			||||||
	int ly = reference->wlr_output->ly + reference->wlr_output->height / 2;
 | 
						int ly = reference->wlr_output->ly + reference->height / 2;
 | 
				
			||||||
	struct wlr_output *wlr_adjacent = wlr_output_layout_adjacent_output(
 | 
						struct wlr_output *wlr_adjacent = wlr_output_layout_adjacent_output(
 | 
				
			||||||
			root->output_layout, wlr_dir, reference->wlr_output, lx, ly);
 | 
								root->output_layout, wlr_dir, reference->wlr_output, lx, ly);
 | 
				
			||||||
	if (!wlr_adjacent) {
 | 
						if (!wlr_adjacent) {
 | 
				
			||||||
| 
						 | 
					@ -346,10 +351,10 @@ void output_sort_workspaces(struct sway_output *output) {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void output_get_box(struct sway_output *output, struct wlr_box *box) {
 | 
					void output_get_box(struct sway_output *output, struct wlr_box *box) {
 | 
				
			||||||
	box->x = output->wlr_output->lx;
 | 
						box->x = output->lx;
 | 
				
			||||||
	box->y = output->wlr_output->ly;
 | 
						box->y = output->ly;
 | 
				
			||||||
	box->width = output->wlr_output->width;
 | 
						box->width = output->width;
 | 
				
			||||||
	box->height = output->wlr_output->height;
 | 
						box->height = output->height;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
enum sway_container_layout output_get_default_layout(
 | 
					enum sway_container_layout output_get_default_layout(
 | 
				
			||||||
| 
						 | 
					@ -360,7 +365,7 @@ enum sway_container_layout output_get_default_layout(
 | 
				
			||||||
	if (config->default_orientation != L_NONE) {
 | 
						if (config->default_orientation != L_NONE) {
 | 
				
			||||||
		return config->default_orientation;
 | 
							return config->default_orientation;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if (output->wlr_output->height > output->wlr_output->width) {
 | 
						if (output->height > output->width) {
 | 
				
			||||||
		return L_VERT;
 | 
							return L_VERT;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return L_HORIZ;
 | 
						return L_HORIZ;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -167,10 +167,10 @@ void view_autoconfigure(struct sway_view *view) {
 | 
				
			||||||
	struct sway_output *output = view->container->workspace->output;
 | 
						struct sway_output *output = view->container->workspace->output;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (view->container->is_fullscreen) {
 | 
						if (view->container->is_fullscreen) {
 | 
				
			||||||
		view->x = output->wlr_output->lx;
 | 
							view->x = output->lx;
 | 
				
			||||||
		view->y = output->wlr_output->ly;
 | 
							view->y = output->ly;
 | 
				
			||||||
		view->width = output->wlr_output->width;
 | 
							view->width = output->width;
 | 
				
			||||||
		view->height = output->wlr_output->height;
 | 
							view->height = output->height;
 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -53,10 +53,10 @@ struct sway_workspace *workspace_create(struct sway_output *output,
 | 
				
			||||||
		return NULL;
 | 
							return NULL;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	node_init(&ws->node, N_WORKSPACE, ws);
 | 
						node_init(&ws->node, N_WORKSPACE, ws);
 | 
				
			||||||
	ws->x = output->wlr_output->lx;
 | 
						ws->x = output->lx;
 | 
				
			||||||
	ws->y = output->wlr_output->ly;
 | 
						ws->y = output->ly;
 | 
				
			||||||
	ws->width = output->wlr_output->width;
 | 
						ws->width = output->width;
 | 
				
			||||||
	ws->height = output->wlr_output->height;
 | 
						ws->height = output->height;
 | 
				
			||||||
	ws->name = name ? strdup(name) : NULL;
 | 
						ws->name = name ? strdup(name) : NULL;
 | 
				
			||||||
	ws->prev_split_layout = L_NONE;
 | 
						ws->prev_split_layout = L_NONE;
 | 
				
			||||||
	ws->layout = output_get_default_layout(output);
 | 
						ws->layout = output_get_default_layout(output);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue