From ccf908b078ee7ce51f4cfe727c6eca2f5bb0f79d Mon Sep 17 00:00:00 2001 From: "Jasper St. Pierre" Date: Tue, 6 May 2014 08:20:22 -0400 Subject: [PATCH] window: Set frame flags immediately when we handle the new states in configure --- clients/window.c | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/clients/window.c b/clients/window.c index 7d883451..1d58ad28 100644 --- a/clients/window.c +++ b/clients/window.c @@ -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)