mirror of
https://gitlab.freedesktop.org/wayland/weston.git
synced 2026-05-05 04:08:13 +02:00
xwm: place transient windows at the right position
This commit is contained in:
parent
9715d4db54
commit
ca43f0942e
1 changed files with 6 additions and 2 deletions
|
|
@ -1002,7 +1002,7 @@ weston_wm_handle_property_notify(struct weston_wm *wm, xcb_generic_event_t *even
|
|||
|
||||
static void
|
||||
weston_wm_window_create(struct weston_wm *wm,
|
||||
xcb_window_t id, int width, int height, int override)
|
||||
xcb_window_t id, int width, int height, int x, int y, int override)
|
||||
{
|
||||
struct weston_wm_window *window;
|
||||
uint32_t values[1];
|
||||
|
|
@ -1026,6 +1026,8 @@ weston_wm_window_create(struct weston_wm *wm,
|
|||
window->override_redirect = override;
|
||||
window->width = width;
|
||||
window->height = height;
|
||||
window->x = x;
|
||||
window->y = y;
|
||||
|
||||
geometry_reply = xcb_get_geometry_reply(wm->conn, geometry_cookie, NULL);
|
||||
/* technically we should use XRender and check the visual format's
|
||||
|
|
@ -1076,6 +1078,7 @@ weston_wm_handle_create_notify(struct weston_wm *wm, xcb_generic_event_t *event)
|
|||
|
||||
weston_wm_window_create(wm, create_notify->window,
|
||||
create_notify->width, create_notify->height,
|
||||
create_notify->x, create_notify->y,
|
||||
create_notify->override_redirect);
|
||||
}
|
||||
|
||||
|
|
@ -1112,6 +1115,7 @@ weston_wm_handle_reparent_notify(struct weston_wm *wm, xcb_generic_event_t *even
|
|||
|
||||
if (reparent_notify->parent == wm->screen->root) {
|
||||
weston_wm_window_create(wm, reparent_notify->window, 10, 10,
|
||||
reparent_notify->x, reparent_notify->y,
|
||||
reparent_notify->override_redirect);
|
||||
} else if (!our_resource(wm, reparent_notify->parent)) {
|
||||
window = hash_table_lookup(wm->window_hash,
|
||||
|
|
@ -2037,7 +2041,7 @@ xserver_map_shell_surface(struct weston_wm *wm,
|
|||
shell_interface->set_fullscreen(window->shsurf,
|
||||
WL_SHELL_SURFACE_FULLSCREEN_METHOD_DEFAULT,
|
||||
0, output);
|
||||
} else if (!window->override_redirect) {
|
||||
} else if (!window->override_redirect && !window->transient_for) {
|
||||
shell_interface->set_toplevel(window->shsurf);
|
||||
return;
|
||||
} else {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue