summaryrefslogtreecommitdiffstats
path: root/sway/desktop/xwayland.c
diff options
context:
space:
mode:
Diffstat (limited to 'sway/desktop/xwayland.c')
-rw-r--r--sway/desktop/xwayland.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/sway/desktop/xwayland.c b/sway/desktop/xwayland.c
index 5305ce12..95275937 100644
--- a/sway/desktop/xwayland.c
+++ b/sway/desktop/xwayland.c
@@ -8,6 +8,7 @@
8#include "log.h" 8#include "log.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"
@@ -171,6 +172,11 @@ static uint32_t get_int_prop(struct sway_view *view, enum sway_view_prop prop) {
171 switch (prop) { 172 switch (prop) {
172 case VIEW_PROP_X11_WINDOW_ID: 173 case VIEW_PROP_X11_WINDOW_ID:
173 return view->wlr_xwayland_surface->window_id; 174 return view->wlr_xwayland_surface->window_id;
175 case VIEW_PROP_X11_PARENT_ID:
176 if (view->wlr_xwayland_surface->parent) {
177 return view->wlr_xwayland_surface->parent->window_id;
178 }
179 return 0;
174 case VIEW_PROP_WINDOW_TYPE: 180 case VIEW_PROP_WINDOW_TYPE:
175 return *view->wlr_xwayland_surface->window_type; 181 return *view->wlr_xwayland_surface->window_type;
176 default: 182 default:
@@ -385,6 +391,11 @@ static void handle_unmap(struct wl_listener *listener, void *data) {
385 wl_list_remove(&xwayland_view->commit.link); 391 wl_list_remove(&xwayland_view->commit.link);
386} 392}
387 393
394static void do_rebase(void *data) {
395 struct sway_cursor *cursor = data;
396 cursor_rebase(cursor);
397}
398
388static void handle_map(struct wl_listener *listener, void *data) { 399static void handle_map(struct wl_listener *listener, void *data) {
389 struct sway_xwayland_view *xwayland_view = 400 struct sway_xwayland_view *xwayland_view =
390 wl_container_of(listener, xwayland_view, map); 401 wl_container_of(listener, xwayland_view, map);
@@ -411,7 +422,8 @@ static void handle_map(struct wl_listener *listener, void *data) {
411 // Put it back into the tree 422 // Put it back into the tree
412 view_map(view, xsurface->surface, xsurface->fullscreen, false); 423 view_map(view, xsurface->surface, xsurface->fullscreen, false);
413 424
414 transaction_commit_dirty(); 425 struct sway_seat *seat = input_manager_current_seat();
426 transaction_commit_dirty_with_callback(do_rebase, seat->cursor);
415} 427}
416 428
417static void handle_request_configure(struct wl_listener *listener, void *data) { 429static void handle_request_configure(struct wl_listener *listener, void *data) {