completed fullscreen fix

svn path=/trunk/kdebase/kwin/; revision=113471
This commit is contained in:
Matthias Ettrich 2001-09-06 09:21:19 +00:00
parent 87d25e94c5
commit 827e9b92be
2 changed files with 16 additions and 5 deletions

View file

@ -609,7 +609,6 @@ bool Client::manage( bool isMapped, bool doNotShow, bool isInitial )
if ( geom == workspace()->geometry() && inherits( "KWinInternal::NoBorderClient" ) ) { if ( geom == workspace()->geometry() && inherits( "KWinInternal::NoBorderClient" ) ) {
is_fullscreen = TRUE; is_fullscreen = TRUE;
may_move = FALSE; // don't let fullscreen windows be moved around may_move = FALSE; // don't let fullscreen windows be moved around
setStaysOnTop( TRUE ); // fullscreen windows shall be on top
} }
if ( isMapped || session || isTransient() ) { if ( isMapped || session || isTransient() ) {
@ -2271,6 +2270,7 @@ void Client::setActive( bool act)
delete autoRaiseTimer; delete autoRaiseTimer;
autoRaiseTimer = 0; autoRaiseTimer = 0;
} }
activeChange( active ); activeChange( active );
} }

View file

@ -1278,11 +1278,21 @@ void Workspace::setActiveClient( Client* c )
{ {
if ( active_client == c ) if ( active_client == c )
return; return;
if ( active_client ) if ( active_client ) {
active_client->setActive( FALSE ); active_client->setActive( FALSE );
if ( active_client->isFullScreen() && active_client->staysOnTop()
&& c && c->mainClient() != active_client->mainClient() ) {
active_client->setStaysOnTop( FALSE );
lowerClient( active_client );
}
}
active_client = c; active_client = c;
last_active_client = active_client; last_active_client = active_client;
if ( active_client ) { if ( active_client ) {
if ( active_client->isFullScreen() && !active_client->staysOnTop() ) {
active_client->setStaysOnTop( TRUE );
raiseClient( active_client );
}
focus_chain.remove( c ); focus_chain.remove( c );
if ( c->wantsTabFocus() ) if ( c->wantsTabFocus() )
focus_chain.append( c ); focus_chain.append( c );
@ -1352,6 +1362,7 @@ void Workspace::activateClient( Client* c, bool force )
if (!c->isOnDesktop(currentDesktop()) ) { if (!c->isOnDesktop(currentDesktop()) ) {
setCurrentDesktop( c->desktop() ); setCurrentDesktop( c->desktop() );
} }
} }
void Workspace::iconifyOrDeiconifyTransientsOf( Client* c ) void Workspace::iconifyOrDeiconifyTransientsOf( Client* c )