[PATCH weston] xwm: Fix the window decoration hints.
Bryce Harrington
bryce at osg.samsung.com
Thu May 14 20:32:53 PDT 2015
On Sun, May 10, 2015 at 12:14:40PM +0300, Giulio Camuffo wrote:
> Hi,
>
> This seems to work correctly after a brief test, and the code looks fine.
>
> Reviewed-By: Giulio Camuffo <giuliocamuffo at gmail.com>
Thanks, applied:
0c944b0..b0f5a25 master -> master
> 2015-05-04 5:56 GMT+03:00 Dima Ryazanov <dima at gmail.com>:
> > Enable all hints by default. This fixes the "Maximize" button in apps that
> > don't set any hints - e.g., xclock or Firefox. (There's still a problem, though:
> > "decorate" is sometimes treated as a boolean, sometimes as a bitmask.)
> >
> > Handle MWM_DECOR_ALL correctly. It looks like it's supposed to invert the values
> > of the rest of the flags.
> >
> > Signed-off-by: Dima Ryazanov <dima at gmail.com>
> > ---
> > xwayland/window-manager.c | 18 ++++++++++++++----
> > 1 file changed, 14 insertions(+), 4 deletions(-)
> >
> > diff --git a/xwayland/window-manager.c b/xwayland/window-manager.c
> > index cab7e20..78bb13d 100644
> > --- a/xwayland/window-manager.c
> > +++ b/xwayland/window-manager.c
> > @@ -94,6 +94,10 @@ struct motif_wm_hints {
> > #define MWM_DECOR_MINIMIZE (1L << 5)
> > #define MWM_DECOR_MAXIMIZE (1L << 6)
> >
> > +#define MWM_DECOR_EVERYTHING \
> > + (MWM_DECOR_BORDER | MWM_DECOR_RESIZEH | MWM_DECOR_TITLE | \
> > + MWM_DECOR_MENU | MWM_DECOR_MINIMIZE | MWM_DECOR_MAXIMIZE)
> > +
> > #define MWM_INPUT_MODELESS 0
> > #define MWM_INPUT_PRIMARY_APPLICATION_MODAL 1
> > #define MWM_INPUT_SYSTEM_MODAL 2
> > @@ -425,7 +429,7 @@ weston_wm_window_read_properties(struct weston_wm_window *window)
> > props[i].atom,
> > XCB_ATOM_ANY, 0, 2048);
> >
> > - window->decorate = !window->override_redirect;
> > + window->decorate = window->override_redirect ? 0 : MWM_DECOR_EVERYTHING;
> > window->size_hints.flags = 0;
> > window->motif_hints.flags = 0;
> > window->delete_window = 0;
> > @@ -495,9 +499,15 @@ weston_wm_window_read_properties(struct weston_wm_window *window)
> > memcpy(&window->motif_hints,
> > xcb_get_property_value(reply),
> > sizeof window->motif_hints);
> > - if (window->motif_hints.flags & MWM_HINTS_DECORATIONS)
> > - window->decorate =
> > - window->motif_hints.decorations;
> > + if (window->motif_hints.flags & MWM_HINTS_DECORATIONS) {
> > + if (window->motif_hints.decorations & MWM_DECOR_ALL)
> > + /* MWM_DECOR_ALL means all except the other values listed. */
> > + window->decorate =
> > + MWM_DECOR_EVERYTHING & (~window->motif_hints.decorations);
> > + else
> > + window->decorate =
> > + window->motif_hints.decorations;
> > + }
> > break;
> > default:
> > break;
> > --
> > 2.1.4
> >
> > _______________________________________________
> > wayland-devel mailing list
> > wayland-devel at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/wayland-devel
> _______________________________________________
> 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