|
|
@ -138,6 +138,7 @@ struct shell_surface { |
|
|
|
|
|
|
|
|
|
|
|
struct { |
|
|
|
struct { |
|
|
|
int32_t x, y; |
|
|
|
int32_t x, y; |
|
|
|
|
|
|
|
uint32_t flags; |
|
|
|
} transient; |
|
|
|
} transient; |
|
|
|
|
|
|
|
|
|
|
|
struct { |
|
|
|
struct { |
|
|
@ -822,6 +823,18 @@ shell_surface_set_toplevel(struct wl_client *client, |
|
|
|
set_toplevel(surface); |
|
|
|
set_toplevel(surface); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static void |
|
|
|
|
|
|
|
set_transient(struct shell_surface *shsurf, |
|
|
|
|
|
|
|
struct shell_surface *pshsurf, int x, int y, uint32_t flags) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
/* assign to parents output */ |
|
|
|
|
|
|
|
shsurf->parent = pshsurf; |
|
|
|
|
|
|
|
shsurf->transient.x = x; |
|
|
|
|
|
|
|
shsurf->transient.y = y; |
|
|
|
|
|
|
|
shsurf->transient.flags = flags; |
|
|
|
|
|
|
|
shsurf->next_type = SHELL_SURFACE_TRANSIENT; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
static void |
|
|
|
static void |
|
|
|
shell_surface_set_transient(struct wl_client *client, |
|
|
|
shell_surface_set_transient(struct wl_client *client, |
|
|
|
struct wl_resource *resource, |
|
|
|
struct wl_resource *resource, |
|
|
@ -829,12 +842,9 @@ shell_surface_set_transient(struct wl_client *client, |
|
|
|
int x, int y, uint32_t flags) |
|
|
|
int x, int y, uint32_t flags) |
|
|
|
{ |
|
|
|
{ |
|
|
|
struct shell_surface *shsurf = resource->data; |
|
|
|
struct shell_surface *shsurf = resource->data; |
|
|
|
|
|
|
|
struct shell_surface *pshsurf = parent_resource->data; |
|
|
|
|
|
|
|
|
|
|
|
/* assign to parents output */ |
|
|
|
set_transient(shsurf, pshsurf, x, y, flags); |
|
|
|
shsurf->parent = parent_resource->data; |
|
|
|
|
|
|
|
shsurf->transient.x = x; |
|
|
|
|
|
|
|
shsurf->transient.y = y; |
|
|
|
|
|
|
|
shsurf->next_type = SHELL_SURFACE_TRANSIENT; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
static struct desktop_shell * |
|
|
|
static struct desktop_shell * |
|
|
@ -2608,6 +2618,7 @@ shell_init(struct weston_compositor *ec) |
|
|
|
ec->ping_handler = ping_handler; |
|
|
|
ec->ping_handler = ping_handler; |
|
|
|
ec->shell_interface.create_shell_surface = create_shell_surface; |
|
|
|
ec->shell_interface.create_shell_surface = create_shell_surface; |
|
|
|
ec->shell_interface.set_toplevel = set_toplevel; |
|
|
|
ec->shell_interface.set_toplevel = set_toplevel; |
|
|
|
|
|
|
|
ec->shell_interface.set_transient = set_transient; |
|
|
|
ec->shell_interface.move = surface_move; |
|
|
|
ec->shell_interface.move = surface_move; |
|
|
|
|
|
|
|
|
|
|
|
wl_list_init(&shell->backgrounds); |
|
|
|
wl_list_init(&shell->backgrounds); |
|
|
|