aboutsummaryrefslogtreecommitdiff
path: root/sway/desktop/layer_shell.c
diff options
context:
space:
mode:
authoremersion <contact@emersion.fr>2019-02-12 22:55:23 +0100
committeremersion <contact@emersion.fr>2019-02-12 22:57:23 +0100
commit97c89b24b8e4a8e091f6974333457deb73b7800f (patch)
treef6e1e3686921968161fdd5091667b2794f6ca184 /sway/desktop/layer_shell.c
parentfb4f29289fd8d1f94975e64fded6657222ed5390 (diff)
Rebase cursor when a layer surface maps
Also removes an extraneous arrange_outputs call, it's already called if necessary in arrange_layers. Updates https://github.com/swaywm/sway/issues/3080
Diffstat (limited to 'sway/desktop/layer_shell.c')
-rw-r--r--sway/desktop/layer_shell.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/sway/desktop/layer_shell.c b/sway/desktop/layer_shell.c
index de8db75d..0767247c 100644
--- a/sway/desktop/layer_shell.c
+++ b/sway/desktop/layer_shell.c
@@ -6,7 +6,9 @@
#include <wlr/types/wlr_layer_shell_v1.h>
#include <wlr/types/wlr_output_damage.h>
#include <wlr/types/wlr_output.h>
+#include "log.h"
#include "sway/desktop/transaction.h"
+#include "sway/input/cursor.h"
#include "sway/input/input-manager.h"
#include "sway/input/seat.h"
#include "sway/layers.h"
@@ -14,7 +16,6 @@
#include "sway/server.h"
#include "sway/tree/arrange.h"
#include "sway/tree/workspace.h"
-#include "log.h"
static void apply_exclusive(struct wlr_box *usable_area,
uint32_t anchor, int32_t exclusive,
@@ -302,6 +303,8 @@ static void unmap(struct sway_layer_surface *sway_layer) {
if (seat->focused_layer == sway_layer->layer_surface) {
seat_set_focus_layer(seat, NULL);
}
+
+ cursor_rebase_all();
}
static void handle_destroy(struct wl_listener *listener, void *data) {
@@ -321,7 +324,6 @@ static void handle_destroy(struct wl_listener *listener, void *data) {
struct sway_output *output = sway_layer->layer_surface->output->data;
if (output != NULL) {
arrange_layers(output);
- arrange_output(output);
transaction_commit_dirty();
}
wl_list_remove(&sway_layer->output_destroy.link);
@@ -339,6 +341,7 @@ static void handle_map(struct wl_listener *listener, void *data) {
// TODO: send enter to subsurfaces and popups
wlr_surface_send_enter(sway_layer->layer_surface->surface,
sway_layer->layer_surface->output);
+ cursor_rebase_all();
}
static void handle_unmap(struct wl_listener *listener, void *data) {