Skip to content
  • Marek Vasut's avatar
    desktop-shell: Always activate the top-level surface · 7f9c9324
    Marek Vasut authored
    
    
    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: default avatarMarek Vasut <marex@denx.de>
    7f9c9324