diff options
author | Drew DeVault <sir@cmpwn.com> | 2018-03-27 17:36:35 -0400 |
---|---|---|
committer | Drew DeVault <sir@cmpwn.com> | 2018-03-27 18:51:41 -0400 |
commit | a1d5d20914b25ef2d9820f04d885f22d6488d5e1 (patch) | |
tree | 791dec87efa966ab062f245f211058a7270cef68 | |
parent | 52fe2688ea1068d5cd0801ead4fc078c3a37dea1 (diff) |
Address some more feedback
-rw-r--r-- | rootston/layer_shell.c | 7 | ||||
-rw-r--r-- | rootston/output.c | 7 |
2 files changed, 12 insertions, 2 deletions
diff --git a/rootston/layer_shell.c b/rootston/layer_shell.c index 809ddbf3..d6428c51 100644 --- a/rootston/layer_shell.c +++ b/rootston/layer_shell.c @@ -138,6 +138,11 @@ static void arrange_layer(struct wlr_output *output, struct wl_list *list, } else if ((state->anchor & ZWLR_LAYER_SURFACE_V1_ANCHOR_BOTTOM)) { box.y -= state->margin.bottom; } + if (box.width < 0 || box.height < 0) { + // TODO: Bubble up a protocol error? + wlr_layer_surface_close(layer); + continue; + } // Apply roots_surface->geo = box; apply_exclusive(usable_area, state->anchor, state->exclusive_zone, @@ -177,6 +182,7 @@ static void arrange_layers(struct wlr_output *_output) { } // Arrange non-exlusive surfaces from top->bottom + usable_area.x = usable_area.y = 0; wlr_output_effective_resolution(output->wlr_output, &usable_area.width, &usable_area.height); arrange_layer(output->wlr_output, @@ -313,6 +319,7 @@ void handle_layer_shell_surface(struct wl_listener *listener, void *data) { wl_signal_add(&layer_surface->events.map, &roots_surface->map); roots_surface->unmap.notify = handle_unmap; wl_signal_add(&layer_surface->events.unmap, &roots_surface->unmap); + // TODO: Listen for subsurfaces roots_surface->layer_surface = layer_surface; layer_surface->data = roots_surface; diff --git a/rootston/output.c b/rootston/output.c index aa74c8d7..d903963e 100644 --- a/rootston/output.c +++ b/rootston/output.c @@ -560,6 +560,9 @@ static void render_output(struct roots_output *output) { wl_list_for_each_reverse(view, &desktop->views, link) { render_view(view, &data); } + // Render top layer above shell views + render_layer(output, output_box, &data, + &output->layers[ZWLR_LAYER_SHELL_V1_LAYER_TOP]); } // Render drag icons @@ -567,8 +570,6 @@ static void render_output(struct roots_output *output) { drag_icons_for_each_surface(server->input, render_surface, &data); render_layer(output, output_box, &data, - &output->layers[ZWLR_LAYER_SHELL_V1_LAYER_TOP]); - render_layer(output, output_box, &data, &output->layers[ZWLR_LAYER_SHELL_V1_LAYER_OVERLAY]); renderer_end: @@ -670,6 +671,7 @@ void output_damage_whole_local_surface(struct roots_output *output, output->desktop->layout, output->wlr_output); damage_whole_surface(surface, ox + layout->x, oy + layout->y, rotation, output); + // TODO: subsurfaces } static void damage_whole_decoration(struct roots_view *view, @@ -743,6 +745,7 @@ void output_damage_from_local_surface(struct roots_output *output, output->desktop->layout, output->wlr_output); damage_from_surface(surface, ox + layout->x, oy + layout->y, rotation, output); + // TODO: Subsurfaces } void output_damage_from_view(struct roots_output *output, |