GitLab will be down for maintenance this Sunday 13th June, from approx 7-11am UTC. This is for a PostgreSQL migration. See the tracker issue for more informations.

Commit 7f9c9324 authored by Marek Vasut's avatar Marek Vasut
Browse files

desktop-shell: Always activate the top-level surface

In case the device has only touchscreen input device and no keyboard or mouse,
the top level surface is never activated. The behavior differs from a device
which has a keyboard (or gpio-keys, or even uinput-emulated keyboard), where
callchain activate()->weston_view_activate()->weston_seat_set_keyboard_focus()->
weston_keyboard_set_focus()->wl_signal_emit(&keyboard->focus_signal, keyboard)->
handle_keyboard_focus()->weston_desktop_surface_set_activated(..., true); sets
the top level surface as activated. On device with touchscreen, the above is
never called, hence the top level surface is never activated. Add explicit
weston_desktop_surface_set_activated(shsurf->desktop_surface, true); into
activate() to always active the top level surface.

This fixes at least two known issues on such devices:
- Wayland terminal cursor is an empty bar (full bar with keyboard present)
- Chromium dropdown menus are randomly placed (they are placed correctly
  when keyboard is present, because then chromium can find the activated
  top level surface)
Signed-off-by: Marek Vasut's avatarMarek Vasut <>
parent 022ea43f
Pipeline #279557 passed with stages
in 3 minutes and 44 seconds
......@@ -3859,6 +3859,8 @@ activate(struct desktop_shell *shell, struct weston_view *view,
weston_view_activate(view, seat, flags);
weston_desktop_surface_set_activated(shsurf->desktop_surface, true);
state = ensure_focus_state(shell, seat);
if (state == NULL)
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment