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 "";
|
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
|
static void
|
||||||
xdg_toplevel_view_map(struct view *view)
|
xdg_toplevel_view_map(struct view *view)
|
||||||
{
|
{
|
||||||
|
|
@ -465,7 +481,9 @@ xdg_toplevel_view_map(struct view *view)
|
||||||
if (!view->been_mapped) {
|
if (!view->been_mapped) {
|
||||||
struct wlr_xdg_toplevel_requested *requested =
|
struct wlr_xdg_toplevel_requested *requested =
|
||||||
&xdg_toplevel_from_view(view)->requested;
|
&xdg_toplevel_from_view(view)->requested;
|
||||||
foreign_toplevel_handle_create(view);
|
|
||||||
|
init_foreign_toplevel(view);
|
||||||
|
|
||||||
view_set_decorations(view, has_ssd(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);
|
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
|
static void
|
||||||
xwayland_view_map(struct view *view)
|
xwayland_view_map(struct view *view)
|
||||||
{
|
{
|
||||||
|
|
@ -453,7 +469,7 @@ xwayland_view_map(struct view *view)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!view->toplevel.handle) {
|
if (!view->toplevel.handle) {
|
||||||
foreign_toplevel_handle_create(view);
|
init_foreign_toplevel(view);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!view->been_mapped) {
|
if (!view->been_mapped) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue