Skip to content
  • Martin Flöser's avatar
    Initial support for popup window handling · 1193b0da
    Martin Flöser authored
    Summary:
    So far KWin did not properly handle popup windows. That is when a popup
    surface got created and a click outside the surface happened KWin did not
    send out the popupDone Wayland event.
    
    This change makes KWin aware of whether a surface is a popup and tracks
    through a new PopupInputFilter whether there are popup windows. In case
    there are popups the new filter waits for mouse press events and cancels
    the popups if the press does not happen on any surface belonging to the
    same client. To quote the relevant section of the Wayland documentation:
    
        The popup grab continues until the window is destroyed or a mouse
        button is pressed in any other client's window. A click in any of the
        client's surfaces is reported as normal, however, clicks in other
        clients' surfaces will be discarded and trigger the callback.
    
    So far the support is still incomplete. Not yet implemented are:
     * support xdg_shell popup windows
     * verifying whether the popup is allowed to be a popup
     * cancel the popup on more global interactions like screen lock or
       kwin effect
    
    BUG: 366609
    FIXED-IN: 5.10
    
    Test Plan: Auto test and manual testing with QtWayland client
    
    Reviewers: #plasma, #kwin
    
    Subscribers: plasma-devel, kwin
    
    Tags: #kwin
    
    Differential Revision: https://phabricator.kde.org/D5177
    1193b0da