From: Juan Zhao <[email protected]> When applications not directly based on toytoolkit, like simple-egl, efl applications is grabbed and moved, they may be moved to the place under the panel. Then they could not be grabbed again. Add panel height limitation when configuring the surface new places.
Signed-off-by: Juan Zhao <[email protected]> --- src/shell.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/shell.c b/src/shell.c index 613304f..9372edc 100644 --- a/src/shell.c +++ b/src/shell.c @@ -221,6 +221,13 @@ get_shell_surface(struct weston_surface *surface); static struct desktop_shell * shell_surface_get_shell(struct shell_surface *shsurf); +static int +get_output_panel_height(struct desktop_shell *shell, + struct weston_output *output); + +static struct weston_output * +get_default_output(struct weston_compositor *compositor); + static bool shell_surface_is_top_fullscreen(struct shell_surface *shsurf) { @@ -784,13 +791,21 @@ move_grab_motion(struct wl_pointer_grab *grab, struct wl_pointer *pointer = grab->pointer; struct shell_surface *shsurf = move->base.shsurf; struct weston_surface *es; + struct desktop_shell *shell = NULL; int dx = wl_fixed_to_int(pointer->x + move->dx); int dy = wl_fixed_to_int(pointer->y + move->dy); + int panel_height = 0; if (!shsurf) return; es = shsurf->surface; + shsurf->output = shsurf->output ? shsurf->output + : get_default_output(es->compositor); + shell = shell_surface_get_shell(shsurf); + panel_height = get_output_panel_height(shell, shsurf->output); + if ( dy < panel_height ) + dy = panel_height; weston_surface_configure(es, dx, dy, es->geometry.width, es->geometry.height); -- 1.7.11 _______________________________________________ wayland-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/wayland-devel
