window: Set frame flags immediately when we handle the new states in configure
authorJasper St. Pierre <jstpierre@mecheye.net>
Tue, 6 May 2014 12:20:22 +0000 (08:20 -0400)
committerKristian Høgsberg <krh@bitplanet.net>
Tue, 13 May 2014 06:34:05 +0000 (23:34 -0700)
clients/window.c

index 7d88345..1d58ad2 100644 (file)
@@ -2129,12 +2129,6 @@ frame_resize_handler(struct widget *widget,
                interior.width = width;
                interior.height = height;
        } else {
-               if (widget->window->maximized) {
-                       frame_set_flag(frame->frame, FRAME_FLAG_MAXIMIZED);
-               } else {
-                       frame_unset_flag(frame->frame, FRAME_FLAG_MAXIMIZED);
-               }
-
                frame_resize(frame->frame, width, height);
                frame_interior(frame->frame, &interior.x, &interior.y,
                               &interior.width, &interior.height);
@@ -2202,12 +2196,6 @@ frame_redraw_handler(struct widget *widget, void *data)
        if (window->fullscreen)
                return;
 
-       if (window->focused) {
-               frame_set_flag(frame->frame, FRAME_FLAG_ACTIVE);
-       } else {
-               frame_unset_flag(frame->frame, FRAME_FLAG_ACTIVE);
-       }
-
        cr = widget_cairo_create(widget);
 
        frame_repaint(frame->frame, cr);
@@ -3891,6 +3879,20 @@ handle_surface_configure(void *data, struct xdg_surface *xdg_surface,
                }
        }
 
+       if (window->frame) {
+               if (window->maximized) {
+                       frame_set_flag(window->frame->frame, FRAME_FLAG_MAXIMIZED);
+               } else {
+                       frame_unset_flag(window->frame->frame, FRAME_FLAG_MAXIMIZED);
+               }
+
+               if (window->focused) {
+                       frame_set_flag(window->frame->frame, FRAME_FLAG_ACTIVE);
+               } else {
+                       frame_unset_flag(window->frame->frame, FRAME_FLAG_ACTIVE);
+               }
+       }
+
        window->next_attach_serial = serial;
 
        if (window->state_changed_handler)