https://bugs.freedesktop.org/show_bug.cgi?id=80228 --- desktop-shell/shell.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+)
diff --git a/desktop-shell/shell.c b/desktop-shell/shell.c index e3abaad..e3241fd 100644 --- a/desktop-shell/shell.c +++ b/desktop-shell/shell.c @@ -1758,6 +1758,30 @@ struct weston_resize_grab { }; static void +constrain_resize_grab(struct weston_pointer_grab *grab, + int32_t *width, int32_t *height) +{ + struct weston_resize_grab *resize = (struct weston_resize_grab *) grab; + struct shell_surface *shsurf = resize->base.shsurf; + + int32_t height_difference; + + height_difference = *height - shsurf->geometry.height; + + /* we're only trying to make sure titlebars don't go under the panel */ + if (shsurf->shell->panel_position == DESKTOP_SHELL_PANEL_POSITION_TOP && + resize->edges & WL_SHELL_SURFACE_RESIZE_TOP && + height_difference > 0) { + int32_t top; + + top = shsurf->view->geometry.y - height_difference; + + if (top < 0) + *height = shsurf->geometry.height; + } +} + +static void resize_grab_motion(struct weston_pointer_grab *grab, uint32_t time, wl_fixed_t x, wl_fixed_t y) { @@ -1793,6 +1817,8 @@ resize_grab_motion(struct weston_pointer_grab *grab, uint32_t time, height += wl_fixed_to_int(to_y - from_y); } + constrain_resize_grab(grab, &width, &height); + shsurf->client->send_configure(shsurf->surface, width, height); } -- 2.1.0 _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel