diff --git a/client.cpp b/client.cpp index ef57d8b631..1f2a96b065 100644 --- a/client.cpp +++ b/client.cpp @@ -72,6 +72,8 @@ public: if ( m_client->staysOnTop() ) m_client->workspace()->raiseClient( m_client ); } + if( mask & NET::SkipTaskbar ) + m_client->setSkipTaskbar( ( state & NET::SkipTaskbar ) != 0 ); } private: KWinInternal::Client * m_client; @@ -710,6 +712,7 @@ bool Client::manage( bool isMapped, bool doNotShow, bool isInitial ) setSticky( session->sticky ); setShade( session->shaded ); setStaysOnTop( session->staysOnTop ); + setSkipTaskbar( session->skipTaskbar ); maximize( (MaximizeMode) session->maximize ); geom_restore = session->restore; } else { @@ -2235,6 +2238,15 @@ void Client::setStaysOnTop( bool b ) } +void Client::setSkipTaskbar( bool b ) +{ + if ( b == skipTaskbar() ) + return; + skip_taskbar = b; + info->setState( b?NET::SkipTaskbar:0, NET::SkipTaskbar ); +} + + void Client::setDesktop( int desktop) { desk = desktop; diff --git a/client.h b/client.h index 75ba435e46..3e18f27b12 100644 --- a/client.h +++ b/client.h @@ -135,6 +135,9 @@ public: bool staysOnTop() const; void setStaysOnTop( bool ); + bool skipTaskbar() const; + void setSkipTaskbar( bool ); + bool storeSettings() const; void setStoreSettings( bool ); @@ -413,6 +416,11 @@ inline bool Client::staysOnTop() const return stays_on_top; } +inline bool Client::skipTaskbar() const +{ + return skip_taskbar; +} + inline bool Client::storeSettings() const { return store_settings; diff --git a/workspace.cpp b/workspace.cpp index 5f936050fc..9dd858d6c2 100644 --- a/workspace.cpp +++ b/workspace.cpp @@ -2917,6 +2917,7 @@ void Workspace::storeSession( KConfig* config ) config->writeEntry( QString("sticky")+n, c->isSticky() ); config->writeEntry( QString("shaded")+n, c->isShade() ); config->writeEntry( QString("staysOnTop")+n, c->staysOnTop() ); + config->writeEntry( QString("skipTaskbar")+n, c->skipTaskbar() ); } } config->writeEntry( "count", count ); @@ -2949,6 +2950,7 @@ void Workspace::loadSessionInfo() info->sticky = config->readBoolEntry( QString("sticky")+n, FALSE ); info->shaded = config->readBoolEntry( QString("shaded")+n, FALSE ); info->staysOnTop = config->readBoolEntry( QString("staysOnTop")+n, FALSE ); + info->skipTaskbar = config->readBoolEntry( QString("skipTaskbar")+n, FALSE ); } } @@ -2972,6 +2974,7 @@ void Workspace::loadFakeSessionInfo() info->sticky = config->readBoolEntry( QString("sticky")+n, FALSE ); info->shaded = config->readBoolEntry( QString("shaded")+n, FALSE ); info->staysOnTop = config->readBoolEntry( QString("staysOnTop")+n, FALSE ); + info->skipTaskbar = config->readBoolEntry( QString("skipTaskbar")+n, FALSE ); } } @@ -2991,6 +2994,7 @@ void Workspace::storeFakeSessionInfo( Client* c ) info->sticky = c->isSticky(); info->shaded = c->isShade(); info->staysOnTop = c->staysOnTop(); + info->skipTaskbar = c->skipTaskbar(); } void Workspace::writeFakeSessionInfo() @@ -3011,6 +3015,7 @@ void Workspace::writeFakeSessionInfo() config->writeEntry( QString("sticky")+n, info->sticky ); config->writeEntry( QString("shaded")+n, info->shaded ); config->writeEntry( QString("staysOnTop")+n, info->staysOnTop ); + config->writeEntry( QString("skipTaskbar")+n, info->skipTaskbar ); } config->writeEntry( "count", count ); } diff --git a/workspace.h b/workspace.h index dd59891924..afc1dcee31 100644 --- a/workspace.h +++ b/workspace.h @@ -70,6 +70,7 @@ struct SessionInfo bool sticky; bool shaded; bool staysOnTop; + bool skipTaskbar; };