Skip to content
  • Martin Flöser's avatar
    Fix syncing of geometry to internal window when using ::move · 6a78bd45
    Martin Flöser authored
    Summary:
    The OnScreenNotification gets moved during its placement. This update
    of the geometry did not get synced to the QWindow's geometry as it
    should.
    
    The reason for this is the rather special implementation of
    AbstractClient::move. This just modifies the geom variable and does not
    call into setGeometry at all. Instead a virtual doMove method is invoked
    to inform the platform specific client implementation about the move of
    the window. For a "normal" ShellClient that is fine - there is nothing
    to do.
    
    This change adds an implementation of doMove in ShellClient to sync the
    geometry to the internal window. This is not yet enough to fix the
    geometry of the OnScreenNotification. It gets placed with a
    GeometryUpdatesBlocker in place causing the doMove never to be called.
    Instead setGeometry is invoked again when the geometry updates get
    unblocked. So far ShellClient did not do anything in this case. This
    change ensures that at least the doSetGeometry method is performed again.
    
    Test Plan: Added test case and manual testing of OnScreenNotification
    
    Reviewers: #kwin, #plasma_on_wayland
    
    Subscribers: plasma-devel, kwin
    
    Tags: #plasma_on_wayland, #kwin
    
    Differential Revision: https://phabricator.kde.org/D3963
    6a78bd45