diff options
Diffstat (limited to 'sway/desktop/render.c')
-rw-r--r-- | sway/desktop/render.c | 27 |
1 files changed, 5 insertions, 22 deletions
diff --git a/sway/desktop/render.c b/sway/desktop/render.c index 6c9fe23c..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) { | |||
49 | return round((offset + length) * scale) - round(offset * scale); | 49 | return round((offset + length) * scale) - round(offset * scale); |
50 | } | 50 | } |
51 | 51 | ||
52 | static void scale_box(struct wlr_box *box, float scale) { | ||
53 | box->width = scale_length(box->width, box->x, scale); | ||
54 | box->height = scale_length(box->height, box->y, scale); | ||
55 | box->x = round(box->x * scale); | ||
56 | box->y = round(box->y * scale); | ||
57 | } | ||
58 | |||
59 | static void scissor_output(struct wlr_output *wlr_output, | 52 | static void scissor_output(struct wlr_output *wlr_output, |
60 | pixman_box32_t *rect) { | 53 | pixman_box32_t *rect) { |
61 | struct wlr_renderer *renderer = wlr_backend_get_renderer(wlr_output->backend); | 54 | struct wlr_renderer *renderer = wlr_backend_get_renderer(wlr_output->backend); |
@@ -164,7 +157,7 @@ static void render_drag_icons(struct sway_output *output, | |||
164 | 157 | ||
165 | // _box.x and .y are expected to be layout-local | 158 | // _box.x and .y are expected to be layout-local |
166 | // _box.width and .height are expected to be output-buffer-local | 159 | // _box.width and .height are expected to be output-buffer-local |
167 | static void render_rect(struct wlr_output *wlr_output, | 160 | void render_rect(struct wlr_output *wlr_output, |
168 | pixman_region32_t *output_damage, const struct wlr_box *_box, | 161 | pixman_region32_t *output_damage, const struct wlr_box *_box, |
169 | float color[static 4]) { | 162 | float color[static 4]) { |
170 | struct wlr_renderer *renderer = | 163 | struct wlr_renderer *renderer = |
@@ -197,7 +190,7 @@ damage_finish: | |||
197 | pixman_region32_fini(&damage); | 190 | pixman_region32_fini(&damage); |
198 | } | 191 | } |
199 | 192 | ||
200 | static void premultiply_alpha(float color[4], float opacity) { | 193 | void premultiply_alpha(float color[4], float opacity) { |
201 | color[3] *= opacity; | 194 | color[3] *= opacity; |
202 | color[0] *= color[3]; | 195 | color[0] *= color[3]; |
203 | color[1] *= color[3]; | 196 | color[1] *= color[3]; |
@@ -949,21 +942,11 @@ static void render_floating(struct sway_output *soutput, | |||
949 | } | 942 | } |
950 | } | 943 | } |
951 | 944 | ||
952 | static void render_dropzones(struct sway_output *output, | 945 | static void render_seatops(struct sway_output *output, |
953 | pixman_region32_t *damage) { | 946 | pixman_region32_t *damage) { |
954 | struct sway_seat *seat; | 947 | struct sway_seat *seat; |
955 | wl_list_for_each(seat, &server.input->seats, link) { | 948 | wl_list_for_each(seat, &server.input->seats, link) { |
956 | if (seat->operation == OP_MOVE_TILING && seat->op_target_node | 949 | seatop_render(seat, output, damage); |
957 | && node_get_output(seat->op_target_node) == output) { | ||
958 | float color[4]; | ||
959 | memcpy(&color, config->border_colors.focused.indicator, | ||
960 | sizeof(float) * 4); | ||
961 | premultiply_alpha(color, 0.5); | ||
962 | struct wlr_box box; | ||
963 | memcpy(&box, &seat->op_drop_box, sizeof(struct wlr_box)); | ||
964 | scale_box(&box, output->wlr_output->scale); | ||
965 | render_rect(output->wlr_output, damage, &box, color); | ||
966 | } | ||
967 | } | 950 | } |
968 | } | 951 | } |
969 | 952 | ||
@@ -1060,7 +1043,7 @@ void output_render(struct sway_output *output, struct timespec *when, | |||
1060 | &output->layers[ZWLR_LAYER_SHELL_V1_LAYER_TOP]); | 1043 | &output->layers[ZWLR_LAYER_SHELL_V1_LAYER_TOP]); |
1061 | } | 1044 | } |
1062 | 1045 | ||
1063 | render_dropzones(output, damage); | 1046 | render_seatops(output, damage); |
1064 | 1047 | ||
1065 | struct sway_seat *seat = input_manager_current_seat(); | 1048 | struct sway_seat *seat = input_manager_current_seat(); |
1066 | struct sway_container *focus = seat_get_focused_container(seat); | 1049 | struct sway_container *focus = seat_get_focused_container(seat); |