diff options
Diffstat (limited to 'sway/desktop/xdg_shell_v6.c')
-rw-r--r-- | sway/desktop/xdg_shell_v6.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/sway/desktop/xdg_shell_v6.c b/sway/desktop/xdg_shell_v6.c index 7159f1ed..90bf55b2 100644 --- a/sway/desktop/xdg_shell_v6.c +++ b/sway/desktop/xdg_shell_v6.c | |||
@@ -8,6 +8,7 @@ | |||
8 | #include "sway/decoration.h" | 8 | #include "sway/decoration.h" |
9 | #include "sway/desktop.h" | 9 | #include "sway/desktop.h" |
10 | #include "sway/desktop/transaction.h" | 10 | #include "sway/desktop/transaction.h" |
11 | #include "sway/input/cursor.h" | ||
11 | #include "sway/input/input-manager.h" | 12 | #include "sway/input/input-manager.h" |
12 | #include "sway/input/seat.h" | 13 | #include "sway/input/seat.h" |
13 | #include "sway/output.h" | 14 | #include "sway/output.h" |
@@ -393,6 +394,11 @@ static void handle_unmap(struct wl_listener *listener, void *data) { | |||
393 | wl_list_remove(&xdg_shell_v6_view->set_app_id.link); | 394 | wl_list_remove(&xdg_shell_v6_view->set_app_id.link); |
394 | } | 395 | } |
395 | 396 | ||
397 | static void do_rebase(void *data) { | ||
398 | struct sway_cursor *cursor = data; | ||
399 | cursor_rebase(cursor); | ||
400 | } | ||
401 | |||
396 | static void handle_map(struct wl_listener *listener, void *data) { | 402 | static void handle_map(struct wl_listener *listener, void *data) { |
397 | struct sway_xdg_shell_v6_view *xdg_shell_v6_view = | 403 | struct sway_xdg_shell_v6_view *xdg_shell_v6_view = |
398 | wl_container_of(listener, xdg_shell_v6_view, map); | 404 | wl_container_of(listener, xdg_shell_v6_view, map); |
@@ -413,7 +419,8 @@ static void handle_map(struct wl_listener *listener, void *data) { | |||
413 | view_map(view, view->wlr_xdg_surface_v6->surface, | 419 | view_map(view, view->wlr_xdg_surface_v6->surface, |
414 | xdg_surface->toplevel->client_pending.fullscreen, csd); | 420 | xdg_surface->toplevel->client_pending.fullscreen, csd); |
415 | 421 | ||
416 | transaction_commit_dirty(); | 422 | struct sway_seat *seat = input_manager_current_seat(); |
423 | transaction_commit_dirty_with_callback(do_rebase, seat->cursor); | ||
417 | 424 | ||
418 | xdg_shell_v6_view->commit.notify = handle_commit; | 425 | xdg_shell_v6_view->commit.notify = handle_commit; |
419 | wl_signal_add(&xdg_surface->surface->events.commit, | 426 | wl_signal_add(&xdg_surface->surface->events.commit, |