Hi all,
this patch adds a proxy to the fade effect that permits to set ignored
windows, all the windows where slidingpopups is applied add themseves
to this list
Cheers,
Marco Martin
Index: fade/fade.cpp
===================================================================
--- fade/fade.cpp (revision 1018630)
+++ fade/fade.cpp (working copy)
@@ -28,10 +28,16 @@
KWIN_EFFECT( fade, FadeEffect )
FadeEffect::FadeEffect()
+ : m_proxy( this )
{
reconfigure( ReconfigureAll );
}
+const void* FadeEffect::proxy() const
+ {
+ return &m_proxy;
+ }
+
void FadeEffect::reconfigure( ReconfigureFlags )
{
KConfigGroup conf = effects->effectConfig( "Fade" );
@@ -195,10 +201,20 @@
windows.remove( w );
}
+void FadeEffect::setWindowIgnored( EffectWindow* w, bool ignore )
+{
+ if (ignore) {
+ ignoredWindows.insert(w);
+ } else {
+ ignoredWindows.remove(w);
+ }
+}
+
bool FadeEffect::isFadeWindow( EffectWindow* w )
{
if( w->windowClass() == "ksplashx ksplashx"
- || w->windowClass() == "ksplashsimple ksplashsimple" )
+ || w->windowClass() == "ksplashsimple ksplashsimple"
+ || ignoredWindows.contains(w))
{ // see login effect
return false;
}
Index: fade/fade_proxy.cpp
===================================================================
--- fade/fade_proxy.cpp (revision 0)
+++ fade/fade_proxy.cpp (revision 0)
@@ -0,0 +1,40 @@
+/********************************************************************
+ KWin - the KDE window manager
+ This file is part of the KDE project.
+
+Copyright (C) 2009 Marco Martin <[email protected]>
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*********************************************************************/
+
+#include "fade_proxy.h"
+#include "fade.h"
+
+namespace KWin
+{
+
+FadeEffectProxy::FadeEffectProxy( FadeEffect* effect )
+ : m_effect( effect )
+ {
+ }
+
+FadeEffectProxy::~FadeEffectProxy()
+ {
+ }
+
+void FadeEffectProxy::setWindowIgnored(EffectWindow *w, bool ignore) const
+ {
+ m_effect->setWindowIgnored(w, ignore);
+ }
+} // namespace
Index: fade/fade.h
===================================================================
--- fade/fade.h (revision 1018630)
+++ fade/fade.h (working copy)
@@ -21,6 +21,8 @@
#ifndef KWIN_FADE_H
#define KWIN_FADE_H
+#include "fade_proxy.h"
+
#include <kwineffects.h>
namespace KWin
@@ -41,14 +43,19 @@
virtual void windowAdded( EffectWindow* c );
virtual void windowClosed( EffectWindow* c );
virtual void windowDeleted( EffectWindow* c );
+ virtual const void* proxy() const;
+
+ void setWindowIgnored( EffectWindow* w, bool ignore );
bool isFadeWindow( EffectWindow* w );
private:
class WindowInfo;
QHash< const EffectWindow*, WindowInfo > windows;
+ QSet< const EffectWindow* > ignoredWindows;
double fadeInStep, fadeOutStep;
int fadeInTime, fadeOutTime;
bool fadeWindows;
+ FadeEffectProxy m_proxy;
};
class FadeEffect::WindowInfo
Index: fade/fade_proxy.h
===================================================================
--- fade/fade_proxy.h (revision 0)
+++ fade/fade_proxy.h (revision 0)
@@ -0,0 +1,47 @@
+/********************************************************************
+ KWin - the KDE window manager
+ This file is part of the KDE project.
+
+Copyright (C) 2009 Marco Martin <[email protected]>
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+*********************************************************************/
+
+#ifndef KWIN_FADE_PROXY_H
+#define KWIN_FADE_PROXY_H
+
+
+#include <kwineffects.h>
+
+namespace KWin
+{
+
+class FadeEffect;
+
+// Example proxy code, TODO: Use or remove
+class KWIN_EXPORT FadeEffectProxy
+ {
+ public:
+ FadeEffectProxy( FadeEffect* effect );
+ ~FadeEffectProxy();
+
+ void setWindowIgnored(EffectWindow *w, bool ignore) const;
+
+ private:
+ FadeEffect* const m_effect;
+ };
+
+} // namespace
+
+#endif
Index: fade/CMakeLists.txt
===================================================================
--- fade/CMakeLists.txt (revision 1018630)
+++ fade/CMakeLists.txt (working copy)
@@ -4,6 +4,7 @@
# Source files
set( kwin4_effect_builtins_sources ${kwin4_effect_builtins_sources}
fade/fade.cpp
+ fade/fade_proxy.cpp
)
# .desktop files
Index: slidingpopups/slidingpopups.cpp
===================================================================
--- slidingpopups/slidingpopups.cpp (revision 1018630)
+++ slidingpopups/slidingpopups.cpp (working copy)
@@ -20,6 +20,8 @@
#include "slidingpopups.h"
+#include "../fade/fade_proxy.h"
+
#include <kdebug.h>
namespace KWin
@@ -85,7 +87,6 @@
bool animating = false;
bool appearing = false;
QRegion clippedRegion = region;
- data.opacity = 1.0;
if( mAppearingWindows.contains( w ) )
{
@@ -143,6 +144,17 @@
mAppearingWindows[ w ].setProgress( 0.0 );
mAppearingWindows[ w ].setCurveShape( TimeLine::EaseOutCurve );
+ //tell fadeto ignore this window
+ const FadeEffectProxy* proxy =
+ static_cast<const FadeEffectProxy*>( effects->getProxy( "fade" ));
+ if( proxy )
+ {
+ kDebug() << "Retrieved FadeEffectProxy";
+ proxy->setWindowIgnored(w, true);
+ }
+ else
+ kDebug() << "Failed to retrieve FadeEffectProxy. Maybe the fade effect isn't enabled?";
+
w->addRepaintFull();
}
}
Index: slidingpopups/slidingpopups.desktop
===================================================================
--- slidingpopups/slidingpopups.desktop (revision 1018630)
+++ slidingpopups/slidingpopups.desktop (working copy)
@@ -39,4 +39,4 @@
X-KDE-PluginInfo-License=GPL
X-KDE-PluginInfo-EnabledByDefault=true
X-KDE-Library=kwin4_effect_builtins
-X-KDE-Ordering=70
+X-KDE-Ordering=50
_______________________________________________
Plasma-devel mailing list
[email protected]
https://mail.kde.org/mailman/listinfo/plasma-devel