diff options
author | Tiago Vignatti <tiago.vignatti@intel.com> | 2012-06-04 20:01:45 +0300 |
---|---|---|
committer | Kristian Høgsberg <krh@bitplanet.net> | 2012-06-05 11:49:18 -0400 |
commit | 771241e88fffd407a4781f9c7d6dea67bf041756 (patch) | |
tree | a481a11a6a54ff19b2265464b9dc02755fb78f40 | |
parent | 71574542b344d7d4dbd2a543fb3ca30da5a87ccf (diff) |
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>
-rw-r--r-- | src/xwayland/window-manager.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/xwayland/window-manager.c b/src/xwayland/window-manager.c index 3094601..b79e477 100644 --- a/src/xwayland/window-manager.c +++ b/src/xwayland/window-manager.c @@ -109,6 +109,7 @@ struct weston_wm_window { int width, height; int x, y; int decorate; + int override_redirect; }; 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 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; uint32_t values[1]; @@ -709,7 +710,7 @@ weston_wm_window_create(struct weston_wm *wm, window->wm = wm; window->id = id; window->properties_dirty = 1; - + window->override_redirect = override; window->width = width; window->height = height; @@ -740,7 +741,8 @@ weston_wm_handle_create_notify(struct weston_wm *wm, xcb_generic_event_t *event) return; 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 @@ -776,7 +778,8 @@ weston_wm_handle_reparent_notify(struct weston_wm *wm, xcb_generic_event_t *even reparent_notify->event); 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)) { window = hash_table_lookup(wm->window_hash, reparent_notify->window); @@ -1321,7 +1324,8 @@ xserver_map_shell_surface(struct weston_wm *wm, window->surface, &shell_client); - if (!window->transient_for) { + /* ICCCM 4.1.1 */ + if (!window->override_redirect) { shell_interface->set_toplevel(window->shsurf); return; } |