diff --git a/desktop-shell/shell.c b/desktop-shell/shell.c index 4cc23d54..00c7b019 100644 --- a/desktop-shell/shell.c +++ b/desktop-shell/shell.c @@ -3747,10 +3747,15 @@ get_shell_surface_type(struct weston_surface *surface) static void move_binding(struct weston_seat *seat, uint32_t time, uint32_t button, void *data) { - struct weston_surface *focus = seat->pointer->focus->surface; + struct weston_surface *focus; struct weston_surface *surface; struct shell_surface *shsurf; + if (seat->pointer->focus == NULL) + return; + + focus = seat->pointer->focus->surface; + surface = weston_surface_get_main_surface(focus); if (surface == NULL) return; @@ -3833,12 +3838,17 @@ touch_move_binding(struct weston_seat *seat, uint32_t time, void *data) static void resize_binding(struct weston_seat *seat, uint32_t time, uint32_t button, void *data) { - struct weston_surface *focus = seat->pointer->focus->surface; + struct weston_surface *focus; struct weston_surface *surface; uint32_t edges = 0; int32_t x, y; struct shell_surface *shsurf; + if (seat->pointer->focus == NULL) + return; + + focus = seat->pointer->focus->surface; + surface = weston_surface_get_main_surface(focus); if (surface == NULL) return; @@ -4107,10 +4117,15 @@ static void rotate_binding(struct weston_seat *seat, uint32_t time, uint32_t button, void *data) { - struct weston_surface *focus = seat->pointer->focus->surface; + struct weston_surface *focus; struct weston_surface *base_surface; struct shell_surface *surface; + if (seat->pointer->focus == NULL) + return; + + focus = seat->pointer->focus->surface; + base_surface = weston_surface_get_main_surface(focus); if (base_surface == NULL) return;