mirror of
https://github.com/wizbright/waybox.git
synced 2025-10-29 05:40:20 -04:00
Less jerky focusing of shell layers
This commit is contained in:
parent
ac01aefe32
commit
553096a611
1 changed files with 11 additions and 19 deletions
|
|
@ -56,14 +56,6 @@ static void arrange_surface (struct wb_output *output, struct wlr_box *full_area
|
|||
struct wb_layer_surface *surface = desc->data;
|
||||
wlr_scene_layer_surface_v1_configure(surface->scene,
|
||||
full_area, usable_area);
|
||||
|
||||
if (surface->scene->layer_surface->current.layer !=
|
||||
ZWLR_LAYER_SHELL_V1_LAYER_BACKGROUND) {
|
||||
wlr_scene_node_raise_to_top(scene_node);
|
||||
}
|
||||
if (surface->scene->layer_surface == output->server->seat->focused_layer) {
|
||||
seat_set_focus_layer(output->server->seat, surface->scene->layer_surface);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
|
@ -132,31 +124,31 @@ static void handle_surface_commit(struct wl_listener *listener, void *data) {
|
|||
struct wlr_layer_surface_v1 *layer_surface = surface->scene->layer_surface;
|
||||
uint32_t committed = layer_surface->current.committed;
|
||||
|
||||
enum zwlr_layer_shell_v1_layer layer_type = layer_surface->current.layer;
|
||||
struct wlr_scene_node *output_layer = wb_layer_get_scene(
|
||||
surface->output, layer_type);
|
||||
|
||||
if (committed & WLR_LAYER_SURFACE_V1_STATE_LAYER) {
|
||||
enum zwlr_layer_shell_v1_layer layer_type = layer_surface->current.layer;
|
||||
struct wlr_scene_node *output_layer = wb_layer_get_scene(
|
||||
surface->output, layer_type);
|
||||
wlr_scene_node_reparent(surface->scene->node, output_layer);
|
||||
}
|
||||
|
||||
if (committed || layer_surface->mapped != surface->mapped) {
|
||||
surface->mapped = layer_surface->mapped;
|
||||
#if WLR_CHECK_VERSION(0, 17, 0)
|
||||
arrange_layers(surface->output);
|
||||
|
||||
struct timespec now;
|
||||
clock_gettime(CLOCK_MONOTONIC, &now);
|
||||
wlr_surface_send_frame_done(layer_surface->surface, &now);
|
||||
}
|
||||
#else
|
||||
|
||||
if (surface->scene->layer_surface->current.layer !=
|
||||
ZWLR_LAYER_SHELL_V1_LAYER_BACKGROUND) {
|
||||
wlr_scene_node_raise_to_top(output_layer);
|
||||
}
|
||||
|
||||
arrange_layers(surface->output);
|
||||
|
||||
struct timespec now;
|
||||
clock_gettime(CLOCK_MONOTONIC, &now);
|
||||
wlr_surface_send_frame_done(layer_surface->surface, &now);
|
||||
#endif
|
||||
if (layer_surface == surface->server->seat->focused_layer) {
|
||||
seat_focus_surface(surface->server->seat, layer_surface->surface);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue