diff options
Diffstat (limited to 'sway/desktop')
-rw-r--r-- | sway/desktop/output.c | 30 | ||||
-rw-r--r-- | sway/desktop/render.c | 217 | ||||
-rw-r--r-- | sway/desktop/transaction.c | 6 | ||||
-rw-r--r-- | sway/desktop/xdg_shell.c | 4 | ||||
-rw-r--r-- | sway/desktop/xdg_shell_v6.c | 4 | ||||
-rw-r--r-- | sway/desktop/xwayland.c | 4 |
6 files changed, 157 insertions, 108 deletions
diff --git a/sway/desktop/output.c b/sway/desktop/output.c index d649100f..04c9b4f6 100644 --- a/sway/desktop/output.c +++ b/sway/desktop/output.c @@ -29,23 +29,13 @@ #include "sway/tree/view.h" #include "sway/tree/workspace.h" -struct sway_output *output_by_name(const char *name) { +struct sway_output *output_by_name_or_id(const char *name_or_id) { for (int i = 0; i < root->outputs->length; ++i) { struct sway_output *output = root->outputs->items[i]; - if (strcasecmp(output->wlr_output->name, name) == 0) { - return output; - } - } - return NULL; -} - -struct sway_output *output_by_identifier(const char *identifier) { - for (int i = 0; i < root->outputs->length; ++i) { - struct sway_output *output = root->outputs->items[i]; - char output_identifier[128]; - snprintf(output_identifier, sizeof(output_identifier), "%s %s %s", output->wlr_output->make, - output->wlr_output->model, output->wlr_output->serial); - if (strcasecmp(output_identifier, identifier) == 0) { + char identifier[128]; + output_get_identifier(identifier, sizeof(identifier), output); + if (strcasecmp(identifier, name_or_id) == 0 + || strcasecmp(output->wlr_output->name, name_or_id) == 0) { return output; } } @@ -110,7 +100,7 @@ static bool get_surface_box(struct surface_iterator_data *data, } struct wlr_box rotated_box; - wlr_box_rotated_bounds(&box, data->rotation, &rotated_box); + wlr_box_rotated_bounds(&rotated_box, &box, data->rotation); struct wlr_box output_box = { .width = output->width, @@ -118,7 +108,7 @@ static bool get_surface_box(struct surface_iterator_data *data, }; struct wlr_box intersection; - return wlr_box_intersection(&output_box, &rotated_box, &intersection); + return wlr_box_intersection(&intersection, &output_box, &rotated_box); } static void output_for_each_surface_iterator(struct wlr_surface *surface, @@ -310,7 +300,7 @@ static int scale_length(int length, int offset, float scale) { return round((offset + length) * scale) - round(offset * scale); } -static void scale_box(struct wlr_box *box, float scale) { +void scale_box(struct wlr_box *box, float scale) { box->width = scale_length(box->width, box->x, scale); box->height = scale_length(box->height, box->y, scale); box->x = round(box->x * scale); @@ -433,7 +423,7 @@ static void damage_surface_iterator(struct sway_output *output, } if (whole) { - wlr_box_rotated_bounds(&box, rotation, &box); + wlr_box_rotated_bounds(&box, &box, rotation); wlr_output_damage_add_box(output->damage, &box); } @@ -568,6 +558,8 @@ void handle_new_output(struct wl_listener *listener, void *data) { if (!oc || oc->enabled) { output_enable(output, oc); + } else { + wlr_output_enable(output->wlr_output, false); } transaction_commit_dirty(); diff --git a/sway/desktop/render.c b/sway/desktop/render.c index 8d4a701b..a38c6a07 100644 --- a/sway/desktop/render.c +++ b/sway/desktop/render.c @@ -49,13 +49,6 @@ static int scale_length(int length, int offset, float scale) { return round((offset + length) * scale) - round(offset * scale); } -static void scale_box(struct wlr_box *box, float scale) { - box->width = scale_length(box->width, box->x, scale); - box->height = scale_length(box->height, box->y, scale); - box->x = round(box->x * scale); - box->y = round(box->y * scale); -} - static void scissor_output(struct wlr_output *wlr_output, pixman_box32_t *rect) { struct wlr_renderer *renderer = wlr_backend_get_renderer(wlr_output->backend); @@ -73,7 +66,7 @@ static void scissor_output(struct wlr_output *wlr_output, enum wl_output_transform transform = wlr_output_transform_invert(wlr_output->transform); - wlr_box_transform(&box, transform, ow, oh, &box); + wlr_box_transform(&box, &box, transform, ow, oh); wlr_renderer_scissor(renderer, &box); } @@ -164,7 +157,7 @@ static void render_drag_icons(struct sway_output *output, // _box.x and .y are expected to be layout-local // _box.width and .height are expected to be output-buffer-local -static void render_rect(struct wlr_output *wlr_output, +void render_rect(struct wlr_output *wlr_output, pixman_region32_t *output_damage, const struct wlr_box *_box, float color[static 4]) { struct wlr_renderer *renderer = @@ -197,7 +190,7 @@ damage_finish: pixman_region32_fini(&damage); } -static void premultiply_alpha(float color[4], float opacity) { +void premultiply_alpha(float color[4], float opacity) { color[3] *= opacity; color[0] *= color[3]; color[1] *= color[3]; @@ -261,7 +254,7 @@ static void render_saved_view(struct sway_view *view, }; struct wlr_box intersection; - bool intersects = wlr_box_intersection(&output_box, &box, &intersection); + bool intersects = wlr_box_intersection(&intersection, &output_box, &box); if (!intersects) { return; } @@ -368,6 +361,10 @@ static void render_titlebar(struct sway_output *output, children->items[children->length - 1] == con; double output_x = output->wlr_output->lx; double output_y = output->wlr_output->ly; + int titlebar_border_thickness = config->titlebar_border_thickness; + int titlebar_h_padding = config->titlebar_h_padding; + int titlebar_v_padding = config->titlebar_v_padding; + enum alignment title_align = config->title_align; // Single pixel bar above title memcpy(&color, colors->border, sizeof(float) * 4); @@ -375,7 +372,7 @@ static void render_titlebar(struct sway_output *output, box.x = x; box.y = y; box.width = width; - box.height = TITLEBAR_BORDER_THICKNESS; + box.height = titlebar_border_thickness; scale_box(&box, output_scale); render_rect(output->wlr_output, output_damage, &box, color); @@ -391,45 +388,51 @@ static void render_titlebar(struct sway_output *output, } } box.x = x + left_offset; - box.y = y + container_titlebar_height() - TITLEBAR_BORDER_THICKNESS; + box.y = y + container_titlebar_height() - titlebar_border_thickness; box.width = width - left_offset - right_offset; - box.height = TITLEBAR_BORDER_THICKNESS; + box.height = titlebar_border_thickness; scale_box(&box, output_scale); render_rect(output->wlr_output, output_damage, &box, color); if (layout == L_TABBED) { // Single pixel left edge box.x = x; - box.y = y + TITLEBAR_BORDER_THICKNESS; - box.width = TITLEBAR_BORDER_THICKNESS; + box.y = y + titlebar_border_thickness; + box.width = titlebar_border_thickness; box.height = - container_titlebar_height() - TITLEBAR_BORDER_THICKNESS * 2; + container_titlebar_height() - titlebar_border_thickness * 2; scale_box(&box, output_scale); render_rect(output->wlr_output, output_damage, &box, color); // Single pixel right edge - box.x = x + width - TITLEBAR_BORDER_THICKNESS; - box.y = y + TITLEBAR_BORDER_THICKNESS; - box.width = TITLEBAR_BORDER_THICKNESS; + box.x = x + width - titlebar_border_thickness; + box.y = y + titlebar_border_thickness; + box.width = titlebar_border_thickness; box.height = - container_titlebar_height() - TITLEBAR_BORDER_THICKNESS * 2; + container_titlebar_height() - titlebar_border_thickness * 2; scale_box(&box, output_scale); render_rect(output->wlr_output, output_damage, &box, color); } - size_t inner_width = width - TITLEBAR_H_PADDING * 2; - int bg_y = y + TITLEBAR_BORDER_THICKNESS; + int inner_x = x - output_x + titlebar_h_padding; + int bg_y = y + titlebar_border_thickness; + size_t inner_width = width - titlebar_h_padding * 2; + + // output-buffer local + int ob_inner_x = round(inner_x * output_scale); + int ob_inner_width = scale_length(inner_width, inner_x, output_scale); int ob_bg_height = scale_length( - (TITLEBAR_V_PADDING - TITLEBAR_BORDER_THICKNESS) * 2 + + (titlebar_v_padding - titlebar_border_thickness) * 2 + config->font_height, bg_y, output_scale); // Marks - int marks_ob_width = 0; // output-buffer-local + int ob_marks_x = 0; // output-buffer-local + int ob_marks_width = 0; // output-buffer-local if (config->show_marks && marks_texture) { struct wlr_box texture_box; wlr_texture_get_size(marks_texture, &texture_box.width, &texture_box.height); - marks_ob_width = texture_box.width; + ob_marks_width = texture_box.width; // The marks texture might be shorter than the config->font_height, in // which case we need to pad it as evenly as possible above and below. @@ -437,9 +440,15 @@ static void render_titlebar(struct sway_output *output, int ob_padding_above = floor(ob_padding_total / 2.0); int ob_padding_below = ceil(ob_padding_total / 2.0); - // Render texture - texture_box.x = round((x - output_x + width - TITLEBAR_H_PADDING) - * output_scale) - texture_box.width; + // Render texture. If the title is on the right, the marks will be on + // the left. Otherwise, they will be on the right. + if (title_align == ALIGN_RIGHT || texture_box.width > ob_inner_width) { + texture_box.x = ob_inner_x; + } else { + texture_box.x = ob_inner_x + ob_inner_width - texture_box.width; + } + ob_marks_x = texture_box.x; + texture_box.y = round((bg_y - output_y) * output_scale) + ob_padding_above; @@ -448,8 +457,8 @@ static void render_titlebar(struct sway_output *output, WL_OUTPUT_TRANSFORM_NORMAL, 0.0, output->wlr_output->transform_matrix); - if (inner_width * output_scale < texture_box.width) { - texture_box.width = inner_width * output_scale; + if (ob_inner_width < texture_box.width) { + texture_box.width = ob_inner_width; } render_texture(output->wlr_output, output_damage, marks_texture, &texture_box, matrix, con->alpha); @@ -458,7 +467,7 @@ static void render_titlebar(struct sway_output *output, memcpy(&color, colors->background, sizeof(float) * 4); premultiply_alpha(color, con->alpha); box.x = texture_box.x + round(output_x * output_scale); - box.y = round((y + TITLEBAR_BORDER_THICKNESS) * output_scale); + box.y = round((y + titlebar_border_thickness) * output_scale); box.width = texture_box.width; box.height = ob_padding_above; render_rect(output->wlr_output, output_damage, &box, color); @@ -470,24 +479,43 @@ static void render_titlebar(struct sway_output *output, } // Title text - size_t title_ob_width = 0; // output-buffer-local + int ob_title_x = 0; // output-buffer-local + int ob_title_width = 0; // output-buffer-local if (title_texture) { struct wlr_box texture_box; wlr_texture_get_size(title_texture, &texture_box.width, &texture_box.height); - title_ob_width = texture_box.width; + ob_title_width = texture_box.width; // The title texture might be shorter than the config->font_height, // in which case we need to pad it above and below. int ob_padding_above = round((config->font_baseline - - con->title_baseline + TITLEBAR_V_PADDING - - TITLEBAR_BORDER_THICKNESS) * output_scale); + con->title_baseline + titlebar_v_padding - + titlebar_border_thickness) * output_scale); int ob_padding_below = ob_bg_height - ob_padding_above - texture_box.height; // Render texture - texture_box.x = - round((x - output_x + TITLEBAR_H_PADDING) * output_scale); + if (texture_box.width > ob_inner_width - ob_marks_width) { + texture_box.x = (title_align == ALIGN_RIGHT && ob_marks_width) + ? ob_marks_x + ob_marks_width : ob_inner_x; + } else if (title_align == ALIGN_LEFT) { + texture_box.x = ob_inner_x; + } else if (title_align == ALIGN_CENTER) { + // If there are marks visible, center between the edge and marks. + // Otherwise, center in the inner area. + if (ob_marks_width) { + texture_box.x = (ob_inner_x + ob_marks_x) / 2 + - texture_box.width / 2; + } else { + texture_box.x = ob_inner_x + ob_inner_width / 2 + - texture_box.width / 2; + } + } else { + texture_box.x = ob_inner_x + ob_inner_width - texture_box.width; + } + ob_title_x = texture_box.x; + texture_box.y = round((bg_y - output_y) * output_scale) + ob_padding_above; @@ -496,11 +524,10 @@ static void render_titlebar(struct sway_output *output, WL_OUTPUT_TRANSFORM_NORMAL, 0.0, output->wlr_output->transform_matrix); - int inner_x = x - output_x + TITLEBAR_H_PADDING; - int ob_inner_width = scale_length(inner_width, inner_x, output_scale); - if (ob_inner_width - marks_ob_width < texture_box.width) { - texture_box.width = ob_inner_width - marks_ob_width; + if (ob_inner_width - ob_marks_width < texture_box.width) { + texture_box.width = ob_inner_width - ob_marks_width; } + render_texture(output->wlr_output, output_damage, title_texture, &texture_box, matrix, con->alpha); @@ -508,7 +535,7 @@ static void render_titlebar(struct sway_output *output, memcpy(&color, colors->background, sizeof(float) * 4); premultiply_alpha(color, con->alpha); box.x = texture_box.x + round(output_x * output_scale); - box.y = round((y + TITLEBAR_BORDER_THICKNESS) * output_scale); + box.y = round((y + titlebar_border_thickness) * output_scale); box.width = texture_box.width; box.height = ob_padding_above; render_rect(output->wlr_output, output_damage, &box, color); @@ -519,50 +546,83 @@ static void render_titlebar(struct sway_output *output, render_rect(output->wlr_output, output_damage, &box, color); } + // Determine the left + right extends of the textures (output-buffer local) + int ob_left_x, ob_left_width, ob_right_x, ob_right_width; + if (ob_title_width == 0 && ob_marks_width == 0) { + ob_left_x = ob_inner_x; + ob_left_width = 0; + ob_right_x = ob_inner_x; + ob_right_width = 0; + } else if (ob_title_x < ob_marks_x) { + ob_left_x = ob_title_x; + ob_left_width = ob_title_width; + ob_right_x = ob_marks_x; + ob_right_width = ob_marks_width; + } else { + ob_left_x = ob_marks_x; + ob_left_width = ob_marks_width; + ob_right_x = ob_title_x; + ob_right_width = ob_title_width; + } + if (ob_left_x < ob_inner_x) { + ob_left_x = ob_inner_x; + } else if (ob_left_x + ob_left_width > ob_right_x + ob_right_width) { + ob_right_x = ob_left_x; + ob_right_width = ob_left_width; + } + // Filler between title and marks - box.width = - round(inner_width * output_scale) - title_ob_width - marks_ob_width; + box.width = ob_right_x - ob_left_x - ob_left_width; if (box.width > 0) { - box.x = round((x + TITLEBAR_H_PADDING) * output_scale) + title_ob_width; + box.x = ob_left_x + ob_left_width + round(output_x * output_scale); box.y = round(bg_y * output_scale); box.height = ob_bg_height; render_rect(output->wlr_output, output_damage, &box, color); } - // Padding left of title - left_offset = (layout == L_TABBED) * TITLEBAR_BORDER_THICKNESS; + // Padding on left side + left_offset = (layout == L_TABBED) * titlebar_border_thickness; box.x = x + left_offset; - box.y = y + TITLEBAR_BORDER_THICKNESS; - box.width = TITLEBAR_H_PADDING - left_offset; - box.height = (TITLEBAR_V_PADDING - TITLEBAR_BORDER_THICKNESS) * 2 + + box.y = y + titlebar_border_thickness; + box.width = titlebar_h_padding - left_offset; + box.height = (titlebar_v_padding - titlebar_border_thickness) * 2 + config->font_height; scale_box(&box, output_scale); + int left_x = ob_left_x + round(output_x * output_scale); + if (box.x + box.width < left_x) { + box.width += left_x - box.x - box.width; + } render_rect(output->wlr_output, output_damage, &box, color); - // Padding right of marks - right_offset = (layout == L_TABBED) * TITLEBAR_BORDER_THICKNESS; - box.x = x + width - TITLEBAR_H_PADDING; - box.y = y + TITLEBAR_BORDER_THICKNESS; - box.width = TITLEBAR_H_PADDING - right_offset; - box.height = (TITLEBAR_V_PADDING - TITLEBAR_BORDER_THICKNESS) * 2 + + // Padding on right side + right_offset = (layout == L_TABBED) * titlebar_border_thickness; + box.x = x + width - titlebar_h_padding; + box.y = y + titlebar_border_thickness; + box.width = titlebar_h_padding - right_offset; + box.height = (titlebar_v_padding - titlebar_border_thickness) * 2 + config->font_height; scale_box(&box, output_scale); + int right_rx = ob_right_x + ob_right_width + round(output_x * output_scale); + if (right_rx < box.x) { + box.width += box.x - right_rx; + box.x = right_rx; + } render_rect(output->wlr_output, output_damage, &box, color); if (connects_sides) { // Left pixel in line with bottom bar box.x = x; - box.y = y + container_titlebar_height() - TITLEBAR_BORDER_THICKNESS; + box.y = y + container_titlebar_height() - titlebar_border_thickness; box.width = state->border_thickness * state->border_left; - box.height = TITLEBAR_BORDER_THICKNESS; + box.height = titlebar_border_thickness; scale_box(&box, output_scale); render_rect(output->wlr_output, output_damage, &box, color); // Right pixel in line with bottom bar box.x = x + width - state->border_thickness * state->border_right; - box.y = y + container_titlebar_height() - TITLEBAR_BORDER_THICKNESS; + box.y = y + container_titlebar_height() - titlebar_border_thickness; box.width = state->border_thickness * state->border_right; - box.height = TITLEBAR_BORDER_THICKNESS; + box.height = titlebar_border_thickness; scale_box(&box, output_scale); render_rect(output->wlr_output, output_damage, &box, color); } @@ -882,21 +942,11 @@ static void render_floating(struct sway_output *soutput, } } -static void render_dropzones(struct sway_output *output, +static void render_seatops(struct sway_output *output, pixman_region32_t *damage) { struct sway_seat *seat; wl_list_for_each(seat, &server.input->seats, link) { - if (seat->operation == OP_MOVE_TILING && seat->op_target_node - && node_get_output(seat->op_target_node) == output) { - float color[4]; - memcpy(&color, config->border_colors.focused.indicator, - sizeof(float) * 4); - premultiply_alpha(color, 0.5); - struct wlr_box box; - memcpy(&box, &seat->op_drop_box, sizeof(struct wlr_box)); - scale_box(&box, output->wlr_output->scale); - render_rect(output->wlr_output, damage, &box, color); - } + seatop_render(seat, output, damage); } } @@ -950,7 +1000,7 @@ void output_render(struct sway_output *output, struct timespec *when, if (fullscreen_con->view) { if (fullscreen_con->view->saved_buffer) { render_saved_view(fullscreen_con->view, output, damage, 1.0f); - } else { + } else if (fullscreen_con->view->surface) { render_view_toplevels(fullscreen_con->view, output, damage, 1.0f); } @@ -993,7 +1043,7 @@ void output_render(struct sway_output *output, struct timespec *when, &output->layers[ZWLR_LAYER_SHELL_V1_LAYER_TOP]); } - render_dropzones(output, damage); + render_seatops(output, damage); struct sway_seat *seat = input_manager_current_seat(); struct sway_container *focus = seat_get_focused_container(seat); @@ -1012,15 +1062,22 @@ renderer_end: wlr_render_texture(renderer, root->debug_tree, wlr_output->transform_matrix, 0, 40, 1); } - if (debug.damage == DAMAGE_HIGHLIGHT) { - int width, height; - wlr_output_transformed_resolution(wlr_output, &width, &height); - pixman_region32_union_rect(damage, damage, 0, 0, width, height); - } wlr_renderer_scissor(renderer, NULL); wlr_output_render_software_cursors(wlr_output, damage); wlr_renderer_end(renderer); + + int width, height; + wlr_output_transformed_resolution(wlr_output, &width, &height); + + if (debug.damage == DAMAGE_HIGHLIGHT) { + pixman_region32_union_rect(damage, damage, 0, 0, width, height); + } + + enum wl_output_transform transform = + wlr_output_transform_invert(wlr_output->transform); + wlr_region_transform(damage, damage, transform, width, height); + if (!wlr_output_damage_swap_buffers(output->damage, when, damage)) { return; } diff --git a/sway/desktop/transaction.c b/sway/desktop/transaction.c index bf0038b4..1cdd7c6d 100644 --- a/sway/desktop/transaction.c +++ b/sway/desktop/transaction.c @@ -299,7 +299,7 @@ static void transaction_apply(struct sway_transaction *transaction) { if (root->outputs->length) { struct sway_seat *seat; wl_list_for_each(seat, &server.input->seats, link) { - if (seat->operation == OP_NONE) { + if (!seat_doing_seatop(seat)) { cursor_rebase(seat->cursor); } } @@ -363,7 +363,7 @@ static void transaction_progress_queue(void) { static int handle_timeout(void *data) { struct sway_transaction *transaction = data; - wlr_log(WLR_DEBUG, "Transaction %p timed out (%li waiting)", + wlr_log(WLR_DEBUG, "Transaction %p timed out (%zi waiting)", transaction, transaction->num_waiting); transaction->num_waiting = 0; transaction_progress_queue(); @@ -472,7 +472,7 @@ static void set_instruction_ready( struct timespec *start = &transaction->commit_time; float ms = (now.tv_sec - start->tv_sec) * 1000 + (now.tv_nsec - start->tv_nsec) / 1000000.0; - wlr_log(WLR_DEBUG, "Transaction %p: %li/%li ready in %.1fms (%s)", + wlr_log(WLR_DEBUG, "Transaction %p: %zi/%zi ready in %.1fms (%s)", transaction, transaction->num_configures - transaction->num_waiting + 1, transaction->num_configures, ms, diff --git a/sway/desktop/xdg_shell.c b/sway/desktop/xdg_shell.c index 801dcee0..f05e156f 100644 --- a/sway/desktop/xdg_shell.c +++ b/sway/desktop/xdg_shell.c @@ -360,7 +360,7 @@ static void handle_request_move(struct wl_listener *listener, void *data) { struct wlr_xdg_toplevel_move_event *e = data; struct sway_seat *seat = e->seat->seat->data; if (e->serial == seat->last_button_serial) { - seat_begin_move_floating(seat, view->container, seat->last_button); + seatop_begin_move_floating(seat, view->container, seat->last_button); } } @@ -374,7 +374,7 @@ static void handle_request_resize(struct wl_listener *listener, void *data) { struct wlr_xdg_toplevel_resize_event *e = data; struct sway_seat *seat = e->seat->seat->data; if (e->serial == seat->last_button_serial) { - seat_begin_resize_floating(seat, view->container, + seatop_begin_resize_floating(seat, view->container, seat->last_button, e->edges); } } diff --git a/sway/desktop/xdg_shell_v6.c b/sway/desktop/xdg_shell_v6.c index 4bc83b8e..9f6741c8 100644 --- a/sway/desktop/xdg_shell_v6.c +++ b/sway/desktop/xdg_shell_v6.c @@ -357,7 +357,7 @@ static void handle_request_move(struct wl_listener *listener, void *data) { struct wlr_xdg_toplevel_v6_move_event *e = data; struct sway_seat *seat = e->seat->seat->data; if (e->serial == seat->last_button_serial) { - seat_begin_move_floating(seat, view->container, seat->last_button); + seatop_begin_move_floating(seat, view->container, seat->last_button); } } @@ -371,7 +371,7 @@ static void handle_request_resize(struct wl_listener *listener, void *data) { struct wlr_xdg_toplevel_v6_resize_event *e = data; struct sway_seat *seat = e->seat->seat->data; if (e->serial == seat->last_button_serial) { - seat_begin_resize_floating(seat, view->container, + seatop_begin_resize_floating(seat, view->container, seat->last_button, e->edges); } } diff --git a/sway/desktop/xwayland.c b/sway/desktop/xwayland.c index 1838ad32..080f6c41 100644 --- a/sway/desktop/xwayland.c +++ b/sway/desktop/xwayland.c @@ -470,7 +470,7 @@ static void handle_request_move(struct wl_listener *listener, void *data) { return; } struct sway_seat *seat = input_manager_current_seat(); - seat_begin_move_floating(seat, view->container, seat->last_button); + seatop_begin_move_floating(seat, view->container, seat->last_button); } static void handle_request_resize(struct wl_listener *listener, void *data) { @@ -486,7 +486,7 @@ static void handle_request_resize(struct wl_listener *listener, void *data) { } struct wlr_xwayland_resize_event *e = data; struct sway_seat *seat = input_manager_current_seat(); - seat_begin_resize_floating(seat, view->container, + seatop_begin_resize_floating(seat, view->container, seat->last_button, e->edges); } |