This is a better fix than 4a7409a1 because it maintains proper state in the
frame in the case where the client actually has a close handler.  The other
would not properly reset the frame state and didn't check the last two
statusses
---
 clients/window.c | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)

diff --git a/clients/window.c b/clients/window.c
index dd6a213..fca992b 100644
--- a/clients/window.c
+++ b/clients/window.c
@@ -2390,15 +2390,6 @@ frame_handle_status(struct window_frame *frame, struct 
input *input,
                frame_status_clear(frame->frame, FRAME_STATUS_MAXIMIZE);
        }
 
-       if (status & FRAME_STATUS_CLOSE) {
-               if (window->close_handler)
-                       window->close_handler(window->parent,
-                                             window->user_data);
-               else
-                       display_exit(window->display);
-               return;
-       }
-
        if ((status & FRAME_STATUS_MOVE) && window->shell_surface) {
                input_ungrab(input);
                wl_shell_surface_move(window->shell_surface,
@@ -2419,6 +2410,16 @@ frame_handle_status(struct window_frame *frame, struct 
input *input,
 
                frame_status_clear(frame->frame, FRAME_STATUS_RESIZE);
        }
+
+       if (status & FRAME_STATUS_CLOSE) {
+               frame_status_clear(frame->frame, FRAME_STATUS_CLOSE);
+               if (window->close_handler)
+                       window->close_handler(window->parent,
+                                             window->user_data);
+               else
+                       display_exit(window->display);
+               return;
+       }
 }
 
 static void
-- 
1.8.3.1

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

Reply via email to