Don't use wlr_output properties
These properties are before rotation.
This commit is contained in:
parent
7586f150c0
commit
acc2628c79
|
@ -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…
Reference in a new issue