When releasing a client, don't accidentally show it again.

svn path=/trunk/KDE/kdebase/kwin/; revision=412379
This commit is contained in:
Luboš Luňák 2005-05-11 14:46:23 +00:00
parent ced5ab580a
commit c8088bb731
2 changed files with 11 additions and 1 deletions

View file

@ -109,6 +109,7 @@ Client::Client( Workspace *ws )
shade_mode = ShadeNone;
active = FALSE;
deleting = false;
keep_above = FALSE;
keep_below = FALSE;
is_shape = FALSE;
@ -155,6 +156,7 @@ Client::Client( Workspace *ws )
*/
Client::~Client()
{
assert( deleting );
assert(!moveResizeMode);
assert( client == None );
assert( frame == None && wrapper == None );
@ -176,6 +178,8 @@ void Client::deleteClient( Client* c, allowed_t )
*/
void Client::releaseWindow( bool on_shutdown )
{
assert( !deleting );
deleting = true;
StackingUpdatesBlocker blocker( workspace());
if (!custom_opacity) setOpacity(FALSE);
if (moveResizeMode)
@ -228,6 +232,8 @@ void Client::releaseWindow( bool on_shutdown )
// (e.g. the application closed it)
void Client::destroyClient()
{
assert( !deleting );
deleting = true;
StackingUpdatesBlocker blocker( workspace());
if (moveResizeMode)
leaveMoveResize();
@ -804,7 +810,7 @@ void Client::setShade( ShadeMode mode )
setGeometry( geometry(), ForceGeometrySet );
info->setState( isShade() ? NET::Shaded : 0, NET::Shaded );
info->setState( isShown( false ) ? 0 : NET::Hidden, NET::Hidden );
setMappingState( isShown( false ) && isOnCurrentDesktop() ? NormalState : IconicState );
updateVisibility();
updateAllowedActions();
workspace()->updateMinimizedOfTransients( this );
decoration->shadeChange();
@ -831,6 +837,8 @@ void Client::toggleShade()
void Client::updateVisibility()
{
if( deleting )
return;
bool show = true;
if( hidden )
{
@ -875,6 +883,7 @@ void Client::updateVisibility()
void Client::setMappingState(int s)
{
assert( client != None );
assert( !deleting || s == WithdrawnState );
if( mapping_state == s )
return;
bool was_unmanaged = ( mapping_state == WithdrawnState );

View file

@ -456,6 +456,7 @@ class Client : public QObject, public KDecorationDefines
ClientList transients_list; // SELI make this ordered in stacking order?
ShadeMode shade_mode;
uint active :1;
uint deleting : 1; // true when doing cleanup and destroying the client
uint keep_above : 1; // NET::KeepAbove (was stays_on_top)
uint is_shape :1;
uint skip_taskbar :1;