Skip to content
  • Vlad Zahorodnii's avatar
    [wayland] Rework xdg-shell implementation · 31ea780d
    Vlad Zahorodnii authored
    Summary:
    This change splits the XdgShellClient class to better match existing
    abstractions in the xdg-shell protocol and fix a few issues related to
    sending configure events.
    
    In the new client classes, configure events are handled differently.
    Instead of blocking configure events, we try to send them as late as
    possible. Delaying configure events will let us merge changeMaximize()
    for X11 clients and Wayland clients and it also fixes the bug where
    we don't send the final configure event when user has finished resizing
    a window.
    
    Given that configure events are not sent immediately, XdgSurfaceClient
    keeps the last requested frame geometry and the last requested client
    geometry.
    
    This patch doesn't intend to fix all issues in kwin's implementation of
    the xdg-shell protocol. For example, we still handle surface unmapping
    very poorly.
    
    Test Plan: Tests pass.
    
    Reviewers: #kwin
    
    Subscribers: kwin
    
    Tags: #kwin
    
    Differential Revision: https://phabricator.kde.org/D27861
    31ea780d