This is a fix to  the following bug
https://bugs.freedesktop.org/show_bug.cgi?id=80228

Signed-off-by: vivek <[email protected]>
---
 desktop-shell/shell.c | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/desktop-shell/shell.c b/desktop-shell/shell.c
index 48b9faf..01fbb22 100644
--- a/desktop-shell/shell.c
+++ b/desktop-shell/shell.c
@@ -1696,6 +1696,7 @@ resize_grab_motion(struct weston_pointer_grab *grab, 
uint32_t time,
        struct weston_pointer *pointer = grab->pointer;
        struct shell_surface *shsurf = resize->base.shsurf;
        int32_t width, height;
+       int32_t  new_y, panel_height, draw_flag = 1;
        wl_fixed_t from_x, from_y;
        wl_fixed_t to_x, to_y;
 
@@ -1719,12 +1720,22 @@ resize_grab_motion(struct weston_pointer_grab *grab, 
uint32_t time,
 
        height = resize->height;
        if (resize->edges & WL_SHELL_SURFACE_RESIZE_TOP) {
-               height += wl_fixed_to_int(from_y - to_y);
+               new_y = wl_fixed_to_int(pointer->y);
+               panel_height = get_output_panel_height(shsurf->shell,
+                                              shsurf->surface->output);
+               if (new_y < panel_height) {
+                       height += 0;
+                       draw_flag = 0;
+               }
+               else {
+                       height += wl_fixed_to_int(from_y - to_y);
+               }
        } else if (resize->edges & WL_SHELL_SURFACE_RESIZE_BOTTOM) {
                height += wl_fixed_to_int(to_y - from_y);
        }
 
-       shsurf->client->send_configure(shsurf->surface, width, height);
+       if (draw_flag == 1)
+               shsurf->client->send_configure(shsurf->surface, width, height);
 }
 
 static void
-- 
1.9.1

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

Reply via email to