mirror of
https://github.com/labwc/labwc.git
synced 2025-10-29 05:40:24 -04:00
foreign: set parent
Tested with wlroots/examples/foreign-toplevel.c Helped-by: @Consolatis
This commit is contained in:
parent
2b9a6914a6
commit
b149526d03
2 changed files with 36 additions and 2 deletions
20
src/xdg.c
20
src/xdg.c
|
|
@ -449,6 +449,22 @@ xdg_toplevel_view_get_string_prop(struct view *view, const char *prop)
|
|||
return "";
|
||||
}
|
||||
|
||||
static void
|
||||
init_foreign_toplevel(struct view *view)
|
||||
{
|
||||
foreign_toplevel_handle_create(view);
|
||||
struct wlr_xdg_toplevel *toplevel = xdg_toplevel_from_view(view);
|
||||
if (!toplevel->parent) {
|
||||
return;
|
||||
}
|
||||
struct wlr_xdg_surface *surface = toplevel->parent->base;
|
||||
struct view *parent = surface->data;
|
||||
if (!parent->toplevel.handle) {
|
||||
return;
|
||||
}
|
||||
wlr_foreign_toplevel_handle_v1_set_parent(view->toplevel.handle, parent->toplevel.handle);
|
||||
}
|
||||
|
||||
static void
|
||||
xdg_toplevel_view_map(struct view *view)
|
||||
{
|
||||
|
|
@ -465,7 +481,9 @@ xdg_toplevel_view_map(struct view *view)
|
|||
if (!view->been_mapped) {
|
||||
struct wlr_xdg_toplevel_requested *requested =
|
||||
&xdg_toplevel_from_view(view)->requested;
|
||||
foreign_toplevel_handle_create(view);
|
||||
|
||||
init_foreign_toplevel(view);
|
||||
|
||||
view_set_decorations(view, has_ssd(view));
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -407,6 +407,22 @@ top_left_edge_boundary_check(struct view *view)
|
|||
view->impl->configure(view, view->current);
|
||||
}
|
||||
|
||||
static void
|
||||
init_foreign_toplevel(struct view *view)
|
||||
{
|
||||
foreign_toplevel_handle_create(view);
|
||||
|
||||
struct wlr_xwayland_surface *surface = xwayland_surface_from_view(view);
|
||||
if (!surface->parent) {
|
||||
return;
|
||||
}
|
||||
struct view *parent = (struct view *)surface->parent->data;
|
||||
if (!parent->toplevel.handle) {
|
||||
return;
|
||||
}
|
||||
wlr_foreign_toplevel_handle_v1_set_parent(view->toplevel.handle, parent->toplevel.handle);
|
||||
}
|
||||
|
||||
static void
|
||||
xwayland_view_map(struct view *view)
|
||||
{
|
||||
|
|
@ -453,7 +469,7 @@ xwayland_view_map(struct view *view)
|
|||
}
|
||||
|
||||
if (!view->toplevel.handle) {
|
||||
foreign_toplevel_handle_create(view);
|
||||
init_foreign_toplevel(view);
|
||||
}
|
||||
|
||||
if (!view->been_mapped) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue