mirror of
https://gitlab.freedesktop.org/wayland/weston
synced 2024-10-14 22:32:22 +00:00
xwm: use override_redirect for determining or not top-level windows
"top-level window is a window whose override-redirect attribute is False", ICCCM 4.1.1 Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
This commit is contained in:
parent
71574542b3
commit
771241e88f
|
@ -109,6 +109,7 @@ struct weston_wm_window {
|
||||||
int width, height;
|
int width, height;
|
||||||
int x, y;
|
int x, y;
|
||||||
int decorate;
|
int decorate;
|
||||||
|
int override_redirect;
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct weston_wm_window *
|
static struct weston_wm_window *
|
||||||
|
@ -691,7 +692,7 @@ weston_wm_handle_property_notify(struct weston_wm *wm, xcb_generic_event_t *even
|
||||||
|
|
||||||
static void
|
static void
|
||||||
weston_wm_window_create(struct weston_wm *wm,
|
weston_wm_window_create(struct weston_wm *wm,
|
||||||
xcb_window_t id, int width, int height)
|
xcb_window_t id, int width, int height, int override)
|
||||||
{
|
{
|
||||||
struct weston_wm_window *window;
|
struct weston_wm_window *window;
|
||||||
uint32_t values[1];
|
uint32_t values[1];
|
||||||
|
@ -709,7 +710,7 @@ weston_wm_window_create(struct weston_wm *wm,
|
||||||
window->wm = wm;
|
window->wm = wm;
|
||||||
window->id = id;
|
window->id = id;
|
||||||
window->properties_dirty = 1;
|
window->properties_dirty = 1;
|
||||||
|
window->override_redirect = override;
|
||||||
window->width = width;
|
window->width = width;
|
||||||
window->height = height;
|
window->height = height;
|
||||||
|
|
||||||
|
@ -740,7 +741,8 @@ weston_wm_handle_create_notify(struct weston_wm *wm, xcb_generic_event_t *event)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
weston_wm_window_create(wm, create_notify->window,
|
weston_wm_window_create(wm, create_notify->window,
|
||||||
create_notify->width, create_notify->height);
|
create_notify->width, create_notify->height,
|
||||||
|
create_notify->override_redirect);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -776,7 +778,8 @@ weston_wm_handle_reparent_notify(struct weston_wm *wm, xcb_generic_event_t *even
|
||||||
reparent_notify->event);
|
reparent_notify->event);
|
||||||
|
|
||||||
if (reparent_notify->parent == wm->screen->root) {
|
if (reparent_notify->parent == wm->screen->root) {
|
||||||
weston_wm_window_create(wm, reparent_notify->window, 10, 10);
|
weston_wm_window_create(wm, reparent_notify->window, 10, 10,
|
||||||
|
reparent_notify->override_redirect);
|
||||||
} else if (!our_resource(wm, reparent_notify->parent)) {
|
} else if (!our_resource(wm, reparent_notify->parent)) {
|
||||||
window = hash_table_lookup(wm->window_hash,
|
window = hash_table_lookup(wm->window_hash,
|
||||||
reparent_notify->window);
|
reparent_notify->window);
|
||||||
|
@ -1321,7 +1324,8 @@ xserver_map_shell_surface(struct weston_wm *wm,
|
||||||
window->surface,
|
window->surface,
|
||||||
&shell_client);
|
&shell_client);
|
||||||
|
|
||||||
if (!window->transient_for) {
|
/* ICCCM 4.1.1 */
|
||||||
|
if (!window->override_redirect) {
|
||||||
shell_interface->set_toplevel(window->shsurf);
|
shell_interface->set_toplevel(window->shsurf);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue