diff --git a/effects/glide/glide.cpp b/effects/glide/glide.cpp index 1c065e2611..99a8c8b0b1 100644 --- a/effects/glide/glide.cpp +++ b/effects/glide/glide.cpp @@ -34,15 +34,23 @@ KWIN_EFFECT(glide, GlideEffect) KWIN_EFFECT_SUPPORTED(glide, GlideEffect::supported()) static const int IsGlideWindow = 0x22A982D4; +static Atom slideAtom; GlideEffect::GlideEffect() { + slideAtom = XInternAtom( display(), "_KDE_SLIDE", False ); + effects->registerPropertyType( slideAtom, true ); reconfigure(ReconfigureAll); connect(effects, SIGNAL(windowAdded(EffectWindow*)), this, SLOT(slotWindowAdded(EffectWindow*))); connect(effects, SIGNAL(windowClosed(EffectWindow*)), this, SLOT(slotWindowClosed(EffectWindow*))); connect(effects, SIGNAL(windowDeleted(EffectWindow*)), this, SLOT(slotWindowDeleted(EffectWindow*))); } +GlideEffect::~GlideEffect() +{ + effects->registerPropertyType( slideAtom, false ); +} + bool GlideEffect::supported() { return effects->compositingType() == OpenGLCompositing; @@ -217,6 +225,8 @@ bool GlideEffect::isGlideWindow(EffectWindow* w) return false; if (w->data(IsGlideWindow).toBool()) return true; + if (!w->readProperty( slideAtom, slideAtom, 32 ).isNull()) + return false; if (w->hasDecoration()) return true; if (!w->isManaged() || w->isMenu() || w->isNotification() || w->isDesktop() || diff --git a/effects/glide/glide.h b/effects/glide/glide.h index 5d1714f386..000334595d 100644 --- a/effects/glide/glide.h +++ b/effects/glide/glide.h @@ -36,6 +36,7 @@ class GlideEffect Q_OBJECT public: GlideEffect(); + ~GlideEffect(); virtual void reconfigure(ReconfigureFlags); virtual void prePaintScreen(ScreenPrePaintData& data, int time); virtual void prePaintWindow(EffectWindow* w, WindowPrePaintData& data, int time);