diff --git a/desktop-shell/input-panel.c b/desktop-shell/input-panel.c index 267b3ef0..c08a403f 100644 --- a/desktop-shell/input-panel.c +++ b/desktop-shell/input-panel.c @@ -116,14 +116,18 @@ input_panel_configure(struct weston_surface *surface, int32_t sx, int32_t sy) { struct input_panel_surface *ip_surface = surface->configure_private; struct desktop_shell *shell = ip_surface->shell; + struct weston_view *view; float x, y; if (surface->width == 0) return; if (ip_surface->panel) { - x = get_default_view(shell->text_input.surface)->geometry.x + shell->text_input.cursor_rectangle.x2; - y = get_default_view(shell->text_input.surface)->geometry.y + shell->text_input.cursor_rectangle.y2; + view = get_default_view(shell->text_input.surface); + if (view == NULL) + return; + x = view->geometry.x + shell->text_input.cursor_rectangle.x2; + y = view->geometry.y + shell->text_input.cursor_rectangle.y2; } else { x = ip_surface->output->x + (ip_surface->output->width - surface->width) / 2; y = ip_surface->output->y + ip_surface->output->height - surface->height;