In a few places window frame functions were being called on windows
without frames.

Signed-off-by: Trevor McCort <[email protected]>
---
 src/xwayland/window-manager.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/src/xwayland/window-manager.c b/src/xwayland/window-manager.c
index a889278..8e5a807 100644
--- a/src/xwayland/window-manager.c
+++ b/src/xwayland/window-manager.c
@@ -407,7 +407,6 @@ weston_wm_window_read_properties(struct weston_wm_window 
*window)
                                             props[i].atom,
                                             XCB_ATOM_ANY, 0, 2048);
 
-       window->decorate = !window->override_redirect;
        window->size_hints.flags = 0;
        window->motif_hints.flags = 0;
        window->delete_window = 0;
@@ -496,7 +495,7 @@ weston_wm_window_get_frame_size(struct weston_wm_window 
*window,
        if (window->fullscreen) {
                *width = window->width;
                *height = window->height;
-       } else if (window->decorate) {
+       } else if (window->frame) {
                *width = frame_width(window->frame);
                *height = frame_height(window->frame);
        } else {
@@ -514,7 +513,7 @@ weston_wm_window_get_child_position(struct weston_wm_window 
*window,
        if (window->fullscreen) {
                *x = 0;
                *y = 0;
-       } else if (window->decorate) {
+       } else if (window->frame) {
                frame_interior(window->frame, x, y, NULL, NULL);
        } else {
                *x = t->margin;
@@ -693,12 +692,12 @@ weston_wm_window_activate(struct wl_listener *listener, 
void *data)
                                     XCB_TIME_CURRENT_TIME);
        }
 
-       if (wm->focus_window) {
+       if (wm->focus_window && wm->focus_window->frame) {
                frame_unset_flag(wm->focus_window->frame, FRAME_FLAG_ACTIVE);
                weston_wm_window_schedule_repaint(wm->focus_window);
        }
        wm->focus_window = window;
-       if (wm->focus_window) {
+       if (wm->focus_window && wm->focus_window->frame) {
                frame_set_flag(wm->focus_window->frame, FRAME_FLAG_ACTIVE);
                weston_wm_window_schedule_repaint(wm->focus_window);
        }
@@ -845,6 +844,7 @@ weston_wm_handle_map_request(struct weston_wm *wm, 
xcb_generic_event_t *event)
 
        window = hash_table_lookup(wm->window_hash, map_request->window);
 
+       window->decorate = 1;
        weston_wm_window_read_properties(window);
 
        if (window->frame_id == XCB_WINDOW_NONE)
@@ -928,7 +928,7 @@ weston_wm_window_draw_decoration(void *data)
 
        if (window->fullscreen) {
                /* nothing */
-       } else if (window->decorate) {
+       } else if (window->decorate && window->frame) {
                if (wm->focus_window == window)
                        flags |= THEME_FRAME_ACTIVE;
 
-- 
1.8.4

_______________________________________________
wayland-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to