[PATCH weston 1/3] xwm: Initialize window decoration always as !override

Kristian Høgsberg hoegsberg at gmail.com
Sun Jul 22 12:04:25 PDT 2012


On Fri, Jul 20, 2012 at 11:09:53PM +0300, Tiago Vignatti wrote:

I grabbed these three patches, and overall it works much better than
before.  There's still a bit too much duct-tape involved and some
corner cases are still broken though.

Mainly, the problem is that X apps look at their main window position
relative to screen edges and pop up the menu different places
depending on whether the popup would be clipped by a screen edge or
not.  It's pretty easy to try out: move a window towards the bottom of
the screen and then open a menu or a combo box and see how they're
place above the menu or combo box button.  This breaks under xwayland,
since all windows think they're sitting up in 0,0 and have plenty of
space to pop up a menu.  The only way to really fix this is to
propagate the wayland window position into X, and set EWMH struts that
correspond to the desktop panels in weston.  And we may want to not
use the shell.c window types, but just set up a xwm specific
surface->configure callback instead, so we can place the windows were
we want them instead of trying to get shell.c to do the right thing by
guessing transient parents etc.

Anyway, it all works better than before now, so lets go with this for
now.

Kristian

> Signed-off-by: Tiago Vignatti <tiago.vignatti at intel.com>
> ---
>  src/xwayland/window-manager.c |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/src/xwayland/window-manager.c b/src/xwayland/window-manager.c
> index e2e2ba3..e81a229 100644
> --- a/src/xwayland/window-manager.c
> +++ b/src/xwayland/window-manager.c
> @@ -324,7 +324,7 @@ weston_wm_window_read_properties(struct weston_wm_window *window)
>  					     props[i].atom,
>  					     XCB_ATOM_ANY, 0, 2048);
>  
> -	window->decorate = 1;
> +	window->decorate = !window->override_redirect;
>  	for (i = 0; i < ARRAY_LENGTH(props); i++)  {
>  		reply = xcb_get_property_reply(wm->conn, cookie[i], NULL);
>  		if (!reply)
> -- 
> 1.7.9.5
> 
> _______________________________________________
> wayland-devel mailing list
> wayland-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/wayland-devel


More information about the wayland-devel mailing list