shell: Expose set_transient in shell interface
This commit is contained in:
parent
5cbb9c8a6b
commit
491bac19c7
@ -63,6 +63,9 @@ struct weston_shell_interface {
|
|||||||
struct shell_surface **ret);
|
struct shell_surface **ret);
|
||||||
void (*set_toplevel)(struct shell_surface *shsurf);
|
void (*set_toplevel)(struct shell_surface *shsurf);
|
||||||
|
|
||||||
|
void (*set_transient)(struct shell_surface *shsurf,
|
||||||
|
struct shell_surface *pshsurf,
|
||||||
|
int x, int y, uint32_t flags);
|
||||||
int (*move)(struct shell_surface *shsurf, struct weston_seat *ws);
|
int (*move)(struct shell_surface *shsurf, struct weston_seat *ws);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
21
src/shell.c
21
src/shell.c
@ -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);
|
||||||
|
Loading…
Reference in New Issue
Block a user