diff options
author | Tiago Vignatti <tiago.vignatti@intel.com> | 2012-08-14 14:30:19 +0300 |
---|---|---|
committer | Tiago Vignatti <tiago.vignatti@intel.com> | 2012-12-28 14:25:53 -0200 |
commit | 3da9a2722881488e23f176e80c8638fc1a904f88 (patch) | |
tree | 1868764cc83e8474ce6ed7c361c0476953cb9f96 | |
parent | c286be66cf5460ae6dbd9be95d470689949e49cb (diff) |
xwm: Remove support for transient windows
Warning: this removes functionality (#3)
In preparation for split xwm as a client. In any case this wasn't functioning
properly and we need to change with a different scheme of forwarding the
global coordinates to X instead:
http://lists.freedesktop.org/archives/wayland-devel/2012-July/004537.html
Tested-by: Scott Moreau <oreaus@gmail.com>
Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
-rw-r--r-- | src/xwayland/window-manager.c | 58 | ||||
-rw-r--r-- | src/xwayland/window-manager.h | 1 |
2 files changed, 9 insertions, 50 deletions
diff --git a/src/xwayland/window-manager.c b/src/xwayland/window-manager.c index 89cc1f2..16d592a 100644 --- a/src/xwayland/window-manager.c +++ b/src/xwayland/window-manager.c @@ -539,8 +539,6 @@ weston_wm_window_activate(struct wl_listener *listener, void *data) if (wm->focus_window) weston_wm_window_schedule_repaint(wm->focus_window); wm->focus_window = window; - if (window) - wm->focus_latest = window; if (wm->focus_window) weston_wm_window_schedule_repaint(wm->focus_window); } @@ -1613,52 +1611,6 @@ static const struct weston_shell_client shell_client = { }; static void -xserver_map_shell_surface(struct weston_wm *wm, - struct weston_wm_window *window) -{ - struct weston_shell_interface *shell_interface = - &wm->server->compositor->shell_interface; - struct weston_wm_window *parent; - struct theme *t = window->wm->theme; - int parent_id, x = 0, y = 0; - - if (!shell_interface->create_shell_surface) - return; - - window->shsurf = - shell_interface->create_shell_surface(shell_interface->shell, - window->surface, - &shell_client); - - /* ICCCM 4.1.1 */ - if (!window->override_redirect) { - shell_interface->set_toplevel(window->shsurf); - return; - } - - /* not all non-toplevel has transient_for set. So we need this - * workaround to guess a parent that will determine the relative - * position of the transient surface */ - if (!window->transient_for) - parent_id = wm->focus_latest->id; - else - parent_id = window->transient_for->id; - - parent = hash_table_lookup(wm->window_hash, parent_id); - - /* non-decorated and non-toplevel windows, e.g. sub-menus */ - if (!parent->decorate && parent->override_redirect) { - x = parent->x + t->margin; - y = parent->y + t->margin; - } - - shell_interface->set_transient(window->shsurf, parent->surface, - window->x + t->margin - x, - window->y + t->margin - y, - WL_SHELL_SURFACE_TRANSIENT_INACTIVE); -} - -static void xserver_set_window_id(struct wl_client *client, struct wl_resource *resource, struct wl_resource *surface_resource, uint32_t id) { @@ -1666,6 +1618,8 @@ xserver_set_window_id(struct wl_client *client, struct wl_resource *resource, struct weston_wm *wm = wxs->wm; struct wl_surface *surface = surface_resource->data; struct weston_wm_window *window; + struct weston_shell_interface *shell_interface = + &wm->server->compositor->shell_interface; if (client != wxs->client) return; @@ -1686,7 +1640,13 @@ xserver_set_window_id(struct wl_client *client, struct wl_resource *resource, &window->surface_destroy_listener); weston_wm_window_schedule_repaint(window); - xserver_map_shell_surface(wm, window); + + window->shsurf = + shell_interface->create_shell_surface(shell_interface->shell, + window->surface, + &shell_client); + + shell_interface->set_toplevel(window->shsurf); } const struct xserver_interface xserver_implementation = { diff --git a/src/xwayland/window-manager.h b/src/xwayland/window-manager.h index b9c063e..3409fa2 100644 --- a/src/xwayland/window-manager.h +++ b/src/xwayland/window-manager.h @@ -33,7 +33,6 @@ struct weston_wm { struct weston_xserver *server; xcb_window_t wm_window; struct weston_wm_window *focus_window; - struct weston_wm_window *focus_latest; struct theme *theme; xcb_cursor_t *cursors; int last_cursor; |