Damage workspace when a window is unmapped to cause repainting of that area.
svn path=/branches/work/kwin_composite/; revision=607286
This commit is contained in:
parent
38f4f76b31
commit
cb549777ba
2 changed files with 10 additions and 0 deletions
|
@ -183,6 +183,8 @@ void Client::releaseWindow( bool on_shutdown )
|
||||||
leaveMoveResize();
|
leaveMoveResize();
|
||||||
finishWindowRules();
|
finishWindowRules();
|
||||||
++block_geometry_updates;
|
++block_geometry_updates;
|
||||||
|
if( isNormalState()) // is mapped?
|
||||||
|
workspace()->addDamage( geometry());
|
||||||
setMappingState( WithdrawnState );
|
setMappingState( WithdrawnState );
|
||||||
setModal( false ); // otherwise its mainwindow wouldn't get focus
|
setModal( false ); // otherwise its mainwindow wouldn't get focus
|
||||||
hidden = true; // so that it's not considered visible anymore (can't use hideClient(), it would set flags)
|
hidden = true; // so that it's not considered visible anymore (can't use hideClient(), it would set flags)
|
||||||
|
@ -239,6 +241,8 @@ void Client::destroyClient()
|
||||||
leaveMoveResize();
|
leaveMoveResize();
|
||||||
finishWindowRules();
|
finishWindowRules();
|
||||||
++block_geometry_updates;
|
++block_geometry_updates;
|
||||||
|
if( isNormalState()) // is mapped?
|
||||||
|
workspace()->addDamage( geometry());
|
||||||
setModal( false );
|
setModal( false );
|
||||||
hidden = true; // so that it's not considered visible anymore
|
hidden = true; // so that it's not considered visible anymore
|
||||||
workspace()->clientHidden( this );
|
workspace()->clientHidden( this );
|
||||||
|
@ -770,9 +774,13 @@ void Client::setShade( ShadeMode mode )
|
||||||
// tell xcompmgr shade's done
|
// tell xcompmgr shade's done
|
||||||
_shade = 2;
|
_shade = 2;
|
||||||
XChangeProperty(display(), frameId(), atoms->net_wm_window_shade, XA_CARDINAL, 32, PropModeReplace, (unsigned char *) &_shade, 1L);
|
XChangeProperty(display(), frameId(), atoms->net_wm_window_shade, XA_CARDINAL, 32, PropModeReplace, (unsigned char *) &_shade, 1L);
|
||||||
|
if( isNormalState()) // is mapped?
|
||||||
|
workspace()->addDamage( geometry());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
if( isNormalState()) // is mapped?
|
||||||
|
workspace()->addDamage( geometry());
|
||||||
int h = height();
|
int h = height();
|
||||||
shade_geometry_change = true;
|
shade_geometry_change = true;
|
||||||
QSize s( sizeForClientSize( clientSize()));
|
QSize s( sizeForClientSize( clientSize()));
|
||||||
|
@ -934,6 +942,7 @@ void Client::rawShow()
|
||||||
*/
|
*/
|
||||||
void Client::rawHide()
|
void Client::rawHide()
|
||||||
{
|
{
|
||||||
|
workspace()->addDamage( geometry());
|
||||||
// Here it may look like a race condition, as some other client might try to unmap
|
// Here it may look like a race condition, as some other client might try to unmap
|
||||||
// the window between these two XSelectInput() calls. However, they're supposed to
|
// the window between these two XSelectInput() calls. However, they're supposed to
|
||||||
// use XWithdrawWindow(), which also sends a synthetic event to the root window,
|
// use XWithdrawWindow(), which also sends a synthetic event to the root window,
|
||||||
|
|
|
@ -59,6 +59,7 @@ bool Unmanaged::track( Window w )
|
||||||
|
|
||||||
void Unmanaged::release()
|
void Unmanaged::release()
|
||||||
{
|
{
|
||||||
|
workspace()->addDamage( geometry());
|
||||||
finishCompositing();
|
finishCompositing();
|
||||||
workspace()->removeUnmanaged( this, Allowed );
|
workspace()->removeUnmanaged( this, Allowed );
|
||||||
delete this;
|
delete this;
|
||||||
|
|
Loading…
Reference in a new issue