diff options
Diffstat (limited to 'sway/desktop/xdg_shell.c')
-rw-r--r-- | sway/desktop/xdg_shell.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/sway/desktop/xdg_shell.c b/sway/desktop/xdg_shell.c index fda1bdef..064e2707 100644 --- a/sway/desktop/xdg_shell.c +++ b/sway/desktop/xdg_shell.c | |||
@@ -9,6 +9,7 @@ | |||
9 | #include "sway/decoration.h" | 9 | #include "sway/decoration.h" |
10 | #include "sway/desktop.h" | 10 | #include "sway/desktop.h" |
11 | #include "sway/desktop/transaction.h" | 11 | #include "sway/desktop/transaction.h" |
12 | #include "sway/input/cursor.h" | ||
12 | #include "sway/input/input-manager.h" | 13 | #include "sway/input/input-manager.h" |
13 | #include "sway/input/seat.h" | 14 | #include "sway/input/seat.h" |
14 | #include "sway/output.h" | 15 | #include "sway/output.h" |
@@ -396,6 +397,11 @@ static void handle_unmap(struct wl_listener *listener, void *data) { | |||
396 | wl_list_remove(&xdg_shell_view->set_app_id.link); | 397 | wl_list_remove(&xdg_shell_view->set_app_id.link); |
397 | } | 398 | } |
398 | 399 | ||
400 | static void do_rebase(void *data) { | ||
401 | struct sway_cursor *cursor = data; | ||
402 | cursor_rebase(cursor); | ||
403 | } | ||
404 | |||
399 | static void handle_map(struct wl_listener *listener, void *data) { | 405 | static void handle_map(struct wl_listener *listener, void *data) { |
400 | struct sway_xdg_shell_view *xdg_shell_view = | 406 | struct sway_xdg_shell_view *xdg_shell_view = |
401 | wl_container_of(listener, xdg_shell_view, map); | 407 | wl_container_of(listener, xdg_shell_view, map); |
@@ -422,7 +428,8 @@ static void handle_map(struct wl_listener *listener, void *data) { | |||
422 | view_map(view, view->wlr_xdg_surface->surface, | 428 | view_map(view, view->wlr_xdg_surface->surface, |
423 | xdg_surface->toplevel->client_pending.fullscreen, csd); | 429 | xdg_surface->toplevel->client_pending.fullscreen, csd); |
424 | 430 | ||
425 | transaction_commit_dirty(); | 431 | struct sway_seat *seat = input_manager_current_seat(); |
432 | transaction_commit_dirty_with_callback(do_rebase, seat->cursor); | ||
426 | 433 | ||
427 | xdg_shell_view->commit.notify = handle_commit; | 434 | xdg_shell_view->commit.notify = handle_commit; |
428 | wl_signal_add(&xdg_surface->surface->events.commit, | 435 | wl_signal_add(&xdg_surface->surface->events.commit, |