mirror of
https://gitlab.freedesktop.org/wayland/weston.git
synced 2026-05-08 11:18:43 +02:00
window: Add wrappers for xdg_surface_set_transient_for
This commit is contained in:
parent
0790e3978a
commit
53686048cc
2 changed files with 39 additions and 0 deletions
|
|
@ -245,6 +245,8 @@ struct window {
|
|||
struct xdg_surface *xdg_surface;
|
||||
struct xdg_popup *xdg_popup;
|
||||
|
||||
struct window *transient_for;
|
||||
|
||||
struct window_frame *frame;
|
||||
|
||||
/* struct surface::link, contains also main_surface */
|
||||
|
|
@ -3912,6 +3914,22 @@ static const struct xdg_surface_listener xdg_surface_listener = {
|
|||
handle_surface_focused_unset,
|
||||
};
|
||||
|
||||
static void
|
||||
window_sync_transient_for(struct window *window)
|
||||
{
|
||||
struct wl_surface *parent_surface;
|
||||
|
||||
if (!window->xdg_surface)
|
||||
return;
|
||||
|
||||
if (window->transient_for)
|
||||
parent_surface = window->transient_for->main_surface->surface;
|
||||
else
|
||||
parent_surface = NULL;
|
||||
|
||||
xdg_surface_set_transient_for(window->xdg_surface, parent_surface);
|
||||
}
|
||||
|
||||
static void
|
||||
window_flush(struct window *window)
|
||||
{
|
||||
|
|
@ -3926,6 +3944,8 @@ window_flush(struct window *window)
|
|||
xdg_surface_set_user_data(window->xdg_surface, window);
|
||||
xdg_surface_add_listener(window->xdg_surface,
|
||||
&xdg_surface_listener, window);
|
||||
|
||||
window_sync_transient_for(window);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -4372,6 +4392,20 @@ window_create_custom(struct display *display)
|
|||
return window_create_internal(display, 1);
|
||||
}
|
||||
|
||||
void
|
||||
window_set_transient_for(struct window *window,
|
||||
struct window *parent_window)
|
||||
{
|
||||
window->transient_for = parent_window;
|
||||
window_sync_transient_for(window);
|
||||
}
|
||||
|
||||
struct window *
|
||||
window_get_transient_for(struct window *window)
|
||||
{
|
||||
return window->transient_for;
|
||||
}
|
||||
|
||||
static void
|
||||
menu_set_item(struct menu *menu, int sy)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -272,6 +272,11 @@ window_create(struct display *display);
|
|||
struct window *
|
||||
window_create_custom(struct display *display);
|
||||
|
||||
void
|
||||
window_set_transient_for(struct window *window, struct window *parent_window);
|
||||
struct window *
|
||||
window_get_transient_for(struct window *window);
|
||||
|
||||
int
|
||||
window_has_focus(struct window *window);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue