summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTiago Vignatti <tiago.vignatti@intel.com>2012-06-04 20:01:45 +0300
committerKristian Høgsberg <krh@bitplanet.net>2012-06-05 11:49:18 -0400
commit771241e88fffd407a4781f9c7d6dea67bf041756 (patch)
treea481a11a6a54ff19b2265464b9dc02755fb78f40
parent71574542b344d7d4dbd2a543fb3ca30da5a87ccf (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.c14
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;
}