diff --git a/client.h b/client.h index fa12b9ee2b..b203957f56 100644 --- a/client.h +++ b/client.h @@ -556,6 +556,7 @@ class Client }; PendingGeometry_t pending_geometry_update; QRect geom_before_block; + QRect deco_rect_before_block; bool shade_geometry_change; #ifdef HAVE_XSYNC XSyncCounter sync_counter; diff --git a/geometry.cpp b/geometry.cpp index 215cdbf819..68e1375fe5 100644 --- a/geometry.cpp +++ b/geometry.cpp @@ -2016,9 +2016,11 @@ void Client::setGeometry( int x, int y, int w, int h, ForceGeometry_t force ) if( effects != NULL ) static_cast(effects)->windowGeometryShapeChanged( effectWindow(), geom_before_block ); } - addWorkspaceRepaint( geom_before_block ); - addWorkspaceRepaint( geom ); + const QRect deco_rect = decorationRect().translated( geom.x(), geom.y() ); + addWorkspaceRepaint( deco_rect_before_block ); + addWorkspaceRepaint( deco_rect ); geom_before_block = geom; + deco_rect_before_block = deco_rect; } void Client::plainResize( int w, int h, ForceGeometry_t force ) @@ -2086,9 +2088,11 @@ void Client::plainResize( int w, int h, ForceGeometry_t force ) scene->windowGeometryShapeChanged( this ); if( effects != NULL ) static_cast(effects)->windowGeometryShapeChanged( effectWindow(), geom_before_block ); - addWorkspaceRepaint( geom_before_block ); - addWorkspaceRepaint( geom ); + const QRect deco_rect = decorationRect().translated( geom.x(), geom.y() ); + addWorkspaceRepaint( deco_rect_before_block ); + addWorkspaceRepaint( deco_rect ); geom_before_block = geom; + deco_rect_before_block = deco_rect; } /*! @@ -2125,9 +2129,11 @@ void Client::move( int x, int y, ForceGeometry_t force ) workspace()->updateStackingOrder(); workspace()->checkUnredirect(); // client itself is not damaged - addWorkspaceRepaint( geom_before_block ); - addWorkspaceRepaint( geom ); // trigger repaint of window's new location + const QRect deco_rect = decorationRect().translated( geom.x(), geom.y() ); + addWorkspaceRepaint( deco_rect_before_block ); + addWorkspaceRepaint( deco_rect ); // trigger repaint of window's new location geom_before_block = geom; + deco_rect_before_block = deco_rect; } void Client::blockGeometryUpdates( bool block )