Make sure that the repainted area includes the whole decoration when
a window is moved or resized. svn path=/trunk/KDE/kdebase/workspace/; revision=963609
This commit is contained in:
parent
8bba7aed7d
commit
a088f660a5
2 changed files with 13 additions and 6 deletions
1
client.h
1
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;
|
||||
|
|
18
geometry.cpp
18
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<EffectsHandlerImpl*>(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<EffectsHandlerImpl*>(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 )
|
||||
|
|
Loading…
Reference in a new issue