diff --git a/composite.cpp b/composite.cpp index ebd5b5cec3..1de0cee095 100644 --- a/composite.cpp +++ b/composite.cpp @@ -899,6 +899,10 @@ bool Client::shouldUnredirect() const bool Unmanaged::shouldUnredirect() const { + // the pixmap is needed for the login effect, a nicer solution would be the login effect increasing + // refcount for the window pixmap (which would prevent unredirect), avoiding this hack + if( resourceClass() == "ksplashx" || resourceClass() == "ksplashsimple" ) + return false; // it must cover whole display or one xinerama screen, and be the topmost there if( geometry() == workspace()->clientArea( FullArea, geometry().center(), workspace()->currentDesktop()) || geometry() == workspace()->clientArea( ScreenArea, geometry().center(), workspace()->currentDesktop())) diff --git a/effects/login.cpp b/effects/login.cpp index 4bcc714dc9..84a0c3550a 100644 --- a/effects/login.cpp +++ b/effects/login.cpp @@ -98,7 +98,7 @@ void LoginEffect::windowClosed( EffectWindow* w ) bool LoginEffect::isLoginSplash( EffectWindow* w ) { // TODO there should be probably a better way (window type?) - // see also fade effect + // see also fade effect and composite.cpp if( w->windowClass() == "ksplashx ksplashx" || w->windowClass() == "ksplashsimple ksplashsimple" ) {