EffectsHandler emits windowClosed signal
Client and Unmanaged use a signal to notify that they are about to be closed. The EffectsHandlerImpl is connected to those signals and emits the appropriate windowClosed signal to which the effects are connected.icc-effect-5.14.5
parent
ab6f2ba1fd
commit
0b85768ec5
|
@ -234,8 +234,8 @@ void Client::releaseWindow(bool on_shutdown)
|
|||
assert(!deleting);
|
||||
deleting = true;
|
||||
Deleted* del = Deleted::create(this);
|
||||
if (effects) {
|
||||
static_cast<EffectsHandlerImpl*>(effects)->windowClosed(effectWindow());
|
||||
emit clientClosed(this);
|
||||
if (scene) {
|
||||
scene->windowClosed(this, del);
|
||||
}
|
||||
finishCompositing();
|
||||
|
@ -302,8 +302,8 @@ void Client::destroyClient()
|
|||
assert(!deleting);
|
||||
deleting = true;
|
||||
Deleted* del = Deleted::create(this);
|
||||
if (effects) {
|
||||
static_cast<EffectsHandlerImpl*>(effects)->windowClosed(effectWindow());
|
||||
emit clientClosed(this);
|
||||
if (scene) {
|
||||
scene->windowClosed(this, del);
|
||||
}
|
||||
finishCompositing();
|
||||
|
|
1
client.h
1
client.h
|
@ -494,6 +494,7 @@ signals:
|
|||
void maximizeSet(QPair<bool, bool>);
|
||||
void s_activated();
|
||||
void s_fullScreenSet(bool, bool);
|
||||
void clientClosed(KWin::Client*);
|
||||
|
||||
// To make workspace-client calls, a few slots are also
|
||||
// required
|
||||
|
|
19
effects.cpp
19
effects.cpp
|
@ -99,6 +99,13 @@ EffectsHandlerImpl::EffectsHandlerImpl(CompositingType type)
|
|||
connect(ws, SIGNAL(currentDesktopChanged(int)), this, SLOT(slotDesktopChanged(int)));
|
||||
connect(ws, SIGNAL(clientAdded(KWin::Client*)), this, SLOT(slotClientAdded(KWin::Client*)));
|
||||
connect(ws, SIGNAL(unmanagedAdded(KWin::Unmanaged*)), this, SLOT(slotUnmanagedAdded(KWin::Unmanaged*)));
|
||||
// connect all clients
|
||||
foreach (Client *c, ws->clientList()) {
|
||||
connect(c, SIGNAL(clientClosed(KWin::Client*)), this, SLOT(slotClientClosed(KWin::Client*)));
|
||||
}
|
||||
foreach (Unmanaged *u, ws->unmanagedList()) {
|
||||
connect(u, SIGNAL(unmanagedClosed(KWin::Unmanaged*)), this, SLOT(slotUnmanagedClosed(KWin::Unmanaged*)));
|
||||
}
|
||||
reconfigure();
|
||||
}
|
||||
|
||||
|
@ -285,11 +292,13 @@ void EffectsHandlerImpl::windowOpacityChanged(EffectWindow* c, double old_opacit
|
|||
|
||||
void EffectsHandlerImpl::slotClientAdded(Client *c)
|
||||
{
|
||||
connect(c, SIGNAL(clientClosed(KWin::Client*)), this, SLOT(slotClientClosed(KWin::Client*)));
|
||||
emit windowAdded(c->effectWindow());
|
||||
}
|
||||
|
||||
void EffectsHandlerImpl::slotUnmanagedAdded(Unmanaged *u)
|
||||
{
|
||||
connect(u, SIGNAL(unmanagedClosed(KWin::Unmanaged*)), this, SLOT(slotUnmanagedClosed(KWin::Unmanaged*)));
|
||||
emit windowAdded(u->effectWindow());
|
||||
}
|
||||
|
||||
|
@ -300,10 +309,14 @@ void EffectsHandlerImpl::windowDeleted(EffectWindow* c)
|
|||
elevated_windows.removeAll(c);
|
||||
}
|
||||
|
||||
void EffectsHandlerImpl::windowClosed(EffectWindow* c)
|
||||
void EffectsHandlerImpl::slotClientClosed(Client *c)
|
||||
{
|
||||
foreach (const EffectPair & ep, loaded_effects)
|
||||
ep.second->windowClosed(c);
|
||||
emit windowClosed(c->effectWindow());
|
||||
}
|
||||
|
||||
void EffectsHandlerImpl::slotUnmanagedClosed(Unmanaged* u)
|
||||
{
|
||||
emit windowClosed(u->effectWindow());
|
||||
}
|
||||
|
||||
void EffectsHandlerImpl::windowActivated(EffectWindow* c)
|
||||
|
|
|
@ -160,7 +160,6 @@ public:
|
|||
void windowUserMovedResized(EffectWindow* c, bool first, bool last);
|
||||
void windowMoveResizeGeometryUpdate(EffectWindow* c, const QRect& geometry);
|
||||
void windowOpacityChanged(EffectWindow* c, double old_opacity);
|
||||
void windowClosed(EffectWindow* c);
|
||||
void windowDeleted(EffectWindow* c);
|
||||
void windowActivated(EffectWindow* c);
|
||||
void windowMinimized(EffectWindow* c);
|
||||
|
@ -197,6 +196,8 @@ protected Q_SLOTS:
|
|||
void slotDesktopChanged(int old);
|
||||
void slotClientAdded(KWin::Client *c);
|
||||
void slotUnmanagedAdded(KWin::Unmanaged *u);
|
||||
void slotClientClosed(KWin::Client *c);
|
||||
void slotUnmanagedClosed(KWin::Unmanaged *u);
|
||||
|
||||
protected:
|
||||
KLibrary* findEffectLibrary(KService* service);
|
||||
|
|
|
@ -57,6 +57,7 @@ BoxSwitchEffect::BoxSwitchEffect()
|
|||
|
||||
highlight_margin = 10;
|
||||
reconfigure(ReconfigureAll);
|
||||
connect(effects, SIGNAL(windowClosed(EffectWindow*)), this, SLOT(slotWindowClosed(EffectWindow*)));
|
||||
}
|
||||
|
||||
BoxSwitchEffect::~BoxSwitchEffect()
|
||||
|
@ -475,7 +476,7 @@ void BoxSwitchEffect::setSelectedWindow(EffectWindow* w)
|
|||
}
|
||||
}
|
||||
|
||||
void BoxSwitchEffect::windowClosed(EffectWindow* w)
|
||||
void BoxSwitchEffect::slotWindowClosed(EffectWindow* w)
|
||||
{
|
||||
if (w == selected_window) {
|
||||
setSelectedWindow(0);
|
||||
|
|
|
@ -41,6 +41,7 @@ namespace KWin
|
|||
class BoxSwitchEffect
|
||||
: public Effect
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
BoxSwitchEffect();
|
||||
~BoxSwitchEffect();
|
||||
|
@ -57,10 +58,13 @@ public:
|
|||
virtual void tabBoxAdded(int mode);
|
||||
virtual void tabBoxClosed();
|
||||
virtual void tabBoxUpdated();
|
||||
virtual void windowClosed(EffectWindow* w);
|
||||
virtual void* proxy();
|
||||
void activateFromProxy(int mode, bool animate, bool showText, float positioningFactor);
|
||||
void paintWindowsBox(const QRegion& region);
|
||||
|
||||
public Q_SLOTS:
|
||||
void slotWindowClosed(EffectWindow* w);
|
||||
|
||||
private:
|
||||
class ItemInfo;
|
||||
void setActive();
|
||||
|
|
|
@ -70,6 +70,7 @@ CoverSwitchEffect::CoverSwitchEffect()
|
|||
|
||||
const QString fragmentshader = KGlobal::dirs()->findResource("data", "kwin/coverswitch-reflection.glsl");
|
||||
m_reflectionShader = ShaderManager::instance()->loadFragmentShader(ShaderManager::GenericShader, fragmentshader);
|
||||
connect(effects, SIGNAL(windowClosed(EffectWindow*)), this, SLOT(slotWindowClosed(EffectWindow*)));
|
||||
}
|
||||
|
||||
CoverSwitchEffect::~CoverSwitchEffect()
|
||||
|
@ -981,7 +982,7 @@ void CoverSwitchEffect::abort()
|
|||
captionFrame->free();
|
||||
}
|
||||
|
||||
void CoverSwitchEffect::windowClosed(EffectWindow* c)
|
||||
void CoverSwitchEffect::slotWindowClosed(EffectWindow* c)
|
||||
{
|
||||
// if the list is not empty, the effect is active
|
||||
if (!currentWindowList.isEmpty()) {
|
||||
|
|
|
@ -36,6 +36,7 @@ namespace KWin
|
|||
class CoverSwitchEffect
|
||||
: public Effect
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
CoverSwitchEffect();
|
||||
~CoverSwitchEffect();
|
||||
|
@ -49,9 +50,12 @@ public:
|
|||
virtual void tabBoxClosed();
|
||||
virtual void tabBoxUpdated();
|
||||
virtual void windowInputMouseEvent(Window w, QEvent* e);
|
||||
virtual void windowClosed(EffectWindow* c);
|
||||
|
||||
static bool supported();
|
||||
|
||||
public Q_SLOTS:
|
||||
void slotWindowClosed(EffectWindow *c);
|
||||
|
||||
private:
|
||||
void paintScene(EffectWindow* frontWindow, const EffectWindowList& leftWindows, const EffectWindowList& rightWindows,
|
||||
bool reflectedWindows = false);
|
||||
|
|
|
@ -36,6 +36,7 @@ DashboardEffect::DashboardEffect()
|
|||
// read settings
|
||||
reconfigure(ReconfigureAll);
|
||||
connect(effects, SIGNAL(windowAdded(EffectWindow*)), this, SLOT(slotWindowAdded(EffectWindow*)));
|
||||
connect(effects, SIGNAL(windowClosed(EffectWindow*)), this, SLOT(slotWindowClosed(EffectWindow*)));
|
||||
}
|
||||
|
||||
DashboardEffect::~DashboardEffect()
|
||||
|
@ -188,7 +189,7 @@ void DashboardEffect::slotWindowAdded(EffectWindow* w)
|
|||
}
|
||||
}
|
||||
|
||||
void DashboardEffect::windowClosed(EffectWindow* w)
|
||||
void DashboardEffect::slotWindowClosed(EffectWindow* w)
|
||||
{
|
||||
propertyNotify(w, atom);
|
||||
|
||||
|
|
|
@ -43,10 +43,10 @@ public:
|
|||
virtual void reconfigure(ReconfigureFlags);
|
||||
virtual void unpropagate();
|
||||
virtual void windowActivated(EffectWindow *w);
|
||||
virtual void windowClosed(EffectWindow* c);
|
||||
|
||||
public Q_SLOTS:
|
||||
void slotWindowAdded(EffectWindow* c);
|
||||
void slotWindowClosed(EffectWindow *c);
|
||||
private:
|
||||
bool blur;
|
||||
bool isDashboard(EffectWindow* w);
|
||||
|
|
|
@ -74,6 +74,7 @@ DesktopGridEffect::DesktopGridEffect()
|
|||
connect(a, SIGNAL(triggered(bool)), this, SLOT(toggle()));
|
||||
connect(a, SIGNAL(globalShortcutChanged(QKeySequence)), this, SLOT(globalShortcutChanged(QKeySequence)));
|
||||
connect(effects, SIGNAL(windowAdded(EffectWindow*)), this, SLOT(slotWindowAdded(EffectWindow*)));
|
||||
connect(effects, SIGNAL(windowClosed(EffectWindow*)), this, SLOT(slotWindowClosed(EffectWindow*)));
|
||||
|
||||
// Load all other configuration details
|
||||
reconfigure(ReconfigureAll);
|
||||
|
@ -391,7 +392,7 @@ void DesktopGridEffect::slotWindowAdded(EffectWindow* w)
|
|||
effects->addRepaintFull();
|
||||
}
|
||||
|
||||
void DesktopGridEffect::windowClosed(EffectWindow* w)
|
||||
void DesktopGridEffect::slotWindowClosed(EffectWindow* w)
|
||||
{
|
||||
if (!activated && timeline.value() == 0)
|
||||
return;
|
||||
|
|
|
@ -71,7 +71,6 @@ public:
|
|||
virtual void postPaintScreen();
|
||||
virtual void prePaintWindow(EffectWindow* w, WindowPrePaintData& data, int time);
|
||||
virtual void paintWindow(EffectWindow* w, int mask, QRegion region, WindowPaintData& data);
|
||||
virtual void windowClosed(EffectWindow* w);
|
||||
virtual void windowDeleted(EffectWindow* w);
|
||||
virtual void windowGeometryShapeChanged(EffectWindow* w, const QRect& old);
|
||||
virtual void windowInputMouseEvent(Window w, QEvent* e);
|
||||
|
@ -89,6 +88,7 @@ private slots:
|
|||
void slotAddDesktop();
|
||||
void slotRemoveDesktop();
|
||||
void slotWindowAdded(EffectWindow* w);
|
||||
void slotWindowClosed(EffectWindow *w);
|
||||
|
||||
private:
|
||||
QPointF scalePos(const QPoint& pos, int desktop, int screen = -1) const;
|
||||
|
|
|
@ -28,6 +28,7 @@ KWIN_EFFECT(dialogparent, DialogParentEffect)
|
|||
DialogParentEffect::DialogParentEffect()
|
||||
{
|
||||
reconfigure(ReconfigureAll);
|
||||
connect(effects, SIGNAL(windowClosed(EffectWindow*)), this, SLOT(slotWindowClosed(EffectWindow*)));
|
||||
}
|
||||
|
||||
void DialogParentEffect::reconfigure(ReconfigureFlags)
|
||||
|
@ -92,7 +93,7 @@ void DialogParentEffect::windowActivated(EffectWindow* w)
|
|||
}
|
||||
}
|
||||
|
||||
void DialogParentEffect::windowClosed(EffectWindow* w)
|
||||
void DialogParentEffect::slotWindowClosed(EffectWindow* w)
|
||||
{
|
||||
// If this window is a dialog, we need to repaint it's parent window, so
|
||||
// that the effect could be run for it
|
||||
|
|
|
@ -37,6 +37,7 @@ namespace KWin
|
|||
class DialogParentEffect
|
||||
: public Effect
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
DialogParentEffect();
|
||||
virtual void reconfigure(ReconfigureFlags);
|
||||
|
@ -45,9 +46,10 @@ public:
|
|||
virtual void paintWindow(EffectWindow* w, int mask, QRegion region, WindowPaintData& data);
|
||||
virtual void postPaintWindow(EffectWindow* w);
|
||||
|
||||
virtual void windowClosed(EffectWindow* c);
|
||||
virtual void windowActivated(EffectWindow* c);
|
||||
|
||||
public Q_SLOTS:
|
||||
void slotWindowClosed(EffectWindow *c);
|
||||
protected:
|
||||
bool hasModalWindow(EffectWindow* t);
|
||||
private:
|
||||
|
|
|
@ -46,6 +46,7 @@ ExplosionEffect::ExplosionEffect() : Effect()
|
|||
mActiveAnimations = 0;
|
||||
mValid = true;
|
||||
mInited = false;
|
||||
connect(effects, SIGNAL(windowClosed(EffectWindow*)), this, SLOT(slotWindowClosed(EffectWindow*)));
|
||||
}
|
||||
|
||||
ExplosionEffect::~ExplosionEffect()
|
||||
|
@ -180,7 +181,7 @@ void ExplosionEffect::postPaintScreen()
|
|||
effects->postPaintScreen();
|
||||
}
|
||||
|
||||
void ExplosionEffect::windowClosed(EffectWindow* c)
|
||||
void ExplosionEffect::slotWindowClosed(EffectWindow* c)
|
||||
{
|
||||
const void* e = c->data(WindowClosedGrabRole).value<void*>();
|
||||
if (e && e != this)
|
||||
|
|
|
@ -38,6 +38,7 @@ class GLTexture;
|
|||
class ExplosionEffect
|
||||
: public Effect
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
ExplosionEffect();
|
||||
~ExplosionEffect();
|
||||
|
@ -47,11 +48,12 @@ public:
|
|||
virtual void paintWindow(EffectWindow* w, int mask, QRegion region, WindowPaintData& data);
|
||||
virtual void postPaintScreen();
|
||||
|
||||
virtual void windowClosed(EffectWindow* c);
|
||||
virtual void windowDeleted(EffectWindow* c);
|
||||
|
||||
static bool supported();
|
||||
|
||||
public Q_SLOTS:
|
||||
void slotWindowClosed(EffectWindow *c);
|
||||
|
||||
protected:
|
||||
bool loadData();
|
||||
|
|
|
@ -31,6 +31,7 @@ FadeEffect::FadeEffect()
|
|||
{
|
||||
reconfigure(ReconfigureAll);
|
||||
connect(effects, SIGNAL(windowAdded(EffectWindow*)), this, SLOT(slotWindowAdded(EffectWindow*)));
|
||||
connect(effects, SIGNAL(windowClosed(EffectWindow*)), this, SLOT(slotWindowClosed(EffectWindow*)));
|
||||
}
|
||||
|
||||
void FadeEffect::reconfigure(ReconfigureFlags)
|
||||
|
@ -162,7 +163,7 @@ void FadeEffect::slotWindowAdded(EffectWindow* w)
|
|||
w->addRepaintFull();
|
||||
}
|
||||
|
||||
void FadeEffect::windowClosed(EffectWindow* w)
|
||||
void FadeEffect::slotWindowClosed(EffectWindow* w)
|
||||
{
|
||||
if (!fadeWindows || !isFadeWindow(w))
|
||||
return;
|
||||
|
|
|
@ -39,13 +39,13 @@ public:
|
|||
|
||||
// TODO react also on virtual desktop changes
|
||||
virtual void windowOpacityChanged(EffectWindow* c, double old_opacity);
|
||||
virtual void windowClosed(EffectWindow* c);
|
||||
virtual void windowDeleted(EffectWindow* c);
|
||||
|
||||
bool isFadeWindow(EffectWindow* w);
|
||||
|
||||
public Q_SLOTS:
|
||||
void slotWindowAdded(EffectWindow* c);
|
||||
void slotWindowClosed(EffectWindow *c);
|
||||
private:
|
||||
class WindowInfo;
|
||||
QHash< const EffectWindow*, WindowInfo > windows;
|
||||
|
|
|
@ -32,6 +32,7 @@ KWIN_EFFECT(fallapart, FallApartEffect)
|
|||
FallApartEffect::FallApartEffect()
|
||||
{
|
||||
reconfigure(ReconfigureAll);
|
||||
connect(effects, SIGNAL(windowClosed(EffectWindow*)), this, SLOT(slotWindowClosed(EffectWindow*)));
|
||||
}
|
||||
|
||||
void FallApartEffect::reconfigure(ReconfigureFlags)
|
||||
|
@ -142,7 +143,7 @@ bool FallApartEffect::isRealWindow(EffectWindow* w)
|
|||
return true;
|
||||
}
|
||||
|
||||
void FallApartEffect::windowClosed(EffectWindow* c)
|
||||
void FallApartEffect::slotWindowClosed(EffectWindow* c)
|
||||
{
|
||||
if (!isRealWindow(c))
|
||||
return;
|
||||
|
|
|
@ -29,6 +29,7 @@ namespace KWin
|
|||
class FallApartEffect
|
||||
: public Effect
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
FallApartEffect();
|
||||
virtual void reconfigure(ReconfigureFlags);
|
||||
|
@ -36,8 +37,11 @@ public:
|
|||
virtual void prePaintWindow(EffectWindow* w, WindowPrePaintData& data, int time);
|
||||
virtual void paintWindow(EffectWindow* w, int mask, QRegion region, WindowPaintData& data);
|
||||
virtual void postPaintScreen();
|
||||
virtual void windowClosed(EffectWindow* c);
|
||||
virtual void windowDeleted(EffectWindow* c);
|
||||
|
||||
public Q_SLOTS:
|
||||
void slotWindowClosed(EffectWindow *c);
|
||||
|
||||
private:
|
||||
QHash< const EffectWindow*, double > windows;
|
||||
bool isRealWindow(EffectWindow* w);
|
||||
|
|
|
@ -70,6 +70,7 @@ FlipSwitchEffect::FlipSwitchEffect()
|
|||
connect(b, SIGNAL(triggered(bool)), this, SLOT(toggleActiveAllDesktops()));
|
||||
connect(b, SIGNAL(globalShortcutChanged(QKeySequence)), this, SLOT(globalShortcutChangedAll(QKeySequence)));
|
||||
connect(effects, SIGNAL(windowAdded(EffectWindow*)), this, SLOT(slotWindowAdded(EffectWindow*)));
|
||||
connect(effects, SIGNAL(windowClosed(EffectWindow*)), this, SLOT(slotWindowClosed(EffectWindow*)));
|
||||
}
|
||||
|
||||
FlipSwitchEffect::~FlipSwitchEffect()
|
||||
|
@ -584,7 +585,7 @@ void FlipSwitchEffect::slotWindowAdded(EffectWindow* w)
|
|||
}
|
||||
}
|
||||
|
||||
void FlipSwitchEffect::windowClosed(EffectWindow* w)
|
||||
void FlipSwitchEffect::slotWindowClosed(EffectWindow* w)
|
||||
{
|
||||
if (m_active && m_windows.contains(w)) {
|
||||
m_windows.remove(w);
|
||||
|
|
|
@ -47,7 +47,6 @@ public:
|
|||
virtual void tabBoxAdded(int mode);
|
||||
virtual void tabBoxClosed();
|
||||
virtual void tabBoxUpdated();
|
||||
virtual void windowClosed(EffectWindow* w);
|
||||
virtual bool borderActivated(ElectricBorder border);
|
||||
virtual void grabbedKeyboardEvent(QKeyEvent* e);
|
||||
|
||||
|
@ -58,6 +57,7 @@ private Q_SLOTS:
|
|||
void globalShortcutChangedCurrent(QKeySequence shortcut);
|
||||
void globalShortcutChangedAll(QKeySequence shortcut);
|
||||
void slotWindowAdded(EffectWindow* w);
|
||||
void slotWindowClosed(EffectWindow *w);
|
||||
|
||||
private:
|
||||
class ItemInfo;
|
||||
|
|
|
@ -38,6 +38,7 @@ GlideEffect::GlideEffect()
|
|||
{
|
||||
reconfigure(ReconfigureAll);
|
||||
connect(effects, SIGNAL(windowAdded(EffectWindow*)), this, SLOT(slotWindowAdded(EffectWindow*)));
|
||||
connect(effects, SIGNAL(windowClosed(EffectWindow*)), this, SLOT(slotWindowClosed(EffectWindow*)));
|
||||
}
|
||||
|
||||
bool GlideEffect::supported()
|
||||
|
@ -180,7 +181,7 @@ void GlideEffect::slotWindowAdded(EffectWindow* w)
|
|||
w->addRepaintFull();
|
||||
}
|
||||
|
||||
void GlideEffect::windowClosed(EffectWindow* w)
|
||||
void GlideEffect::slotWindowClosed(EffectWindow* w)
|
||||
{
|
||||
if (!isGlideWindow(w))
|
||||
return;
|
||||
|
|
|
@ -40,12 +40,12 @@ public:
|
|||
virtual void paintWindow(EffectWindow* w, int mask, QRegion region, WindowPaintData& data);
|
||||
virtual void postPaintWindow(EffectWindow* w);
|
||||
|
||||
virtual void windowClosed(EffectWindow* c);
|
||||
virtual void windowDeleted(EffectWindow* c);
|
||||
|
||||
static bool supported();
|
||||
public Q_SLOTS:
|
||||
void slotWindowAdded(EffectWindow* c);
|
||||
void slotWindowClosed(EffectWindow *c);
|
||||
|
||||
private:
|
||||
class WindowInfo;
|
||||
|
|
|
@ -39,6 +39,7 @@ HighlightWindowEffect::HighlightWindowEffect()
|
|||
unsigned char dummy = 0;
|
||||
XChangeProperty(display(), rootWindow(), m_atom, m_atom, 8, PropModeReplace, &dummy, 1);
|
||||
connect(effects, SIGNAL(windowAdded(EffectWindow*)), this, SLOT(slotWindowAdded(EffectWindow*)));
|
||||
connect(effects, SIGNAL(windowClosed(EffectWindow*)), this, SLOT(slotWindowClosed(EffectWindow*)));
|
||||
}
|
||||
|
||||
HighlightWindowEffect::~HighlightWindowEffect()
|
||||
|
@ -116,7 +117,7 @@ void HighlightWindowEffect::slotWindowAdded(EffectWindow* w)
|
|||
propertyNotify(w, m_atom); // Check initial value
|
||||
}
|
||||
|
||||
void HighlightWindowEffect::windowClosed(EffectWindow* w)
|
||||
void HighlightWindowEffect::slotWindowClosed(EffectWindow* w)
|
||||
{
|
||||
if (m_monitorWindow == w) // The monitoring window was destroyed
|
||||
finishHighlighting();
|
||||
|
|
|
@ -37,13 +37,13 @@ public:
|
|||
virtual void prePaintWindow(EffectWindow* w, WindowPrePaintData& data, int time);
|
||||
virtual void paintWindow(EffectWindow* w, int mask, QRegion region, WindowPaintData& data);
|
||||
|
||||
virtual void windowClosed(EffectWindow* w);
|
||||
virtual void windowDeleted(EffectWindow* w);
|
||||
|
||||
virtual void propertyNotify(EffectWindow* w, long atom);
|
||||
|
||||
public Q_SLOTS:
|
||||
void slotWindowAdded(EffectWindow* w);
|
||||
void slotWindowClosed(EffectWindow *w);
|
||||
|
||||
private:
|
||||
void prepareHighlighting();
|
||||
|
|
|
@ -54,6 +54,7 @@ InvertEffect::InvertEffect()
|
|||
b->setText(i18n("Toggle Invert Effect on Window"));
|
||||
b->setGlobalShortcut(KShortcut(Qt::CTRL + Qt::META + Qt::Key_U));
|
||||
connect(b, SIGNAL(triggered(bool)), this, SLOT(toggleWindow()));
|
||||
connect(effects, SIGNAL(windowClosed(EffectWindow*)), this, SLOT(slotWindowClosed(EffectWindow*)));
|
||||
}
|
||||
|
||||
InvertEffect::~InvertEffect()
|
||||
|
@ -140,7 +141,7 @@ void InvertEffect::paintEffectFrame(KWin::EffectFrame* frame, QRegion region, do
|
|||
}
|
||||
}
|
||||
|
||||
void InvertEffect::windowClosed(EffectWindow* w)
|
||||
void InvertEffect::slotWindowClosed(EffectWindow* w)
|
||||
{
|
||||
m_windows.removeOne(w);
|
||||
}
|
||||
|
|
|
@ -44,13 +44,13 @@ public:
|
|||
virtual void prePaintScreen(ScreenPrePaintData &data, int time);
|
||||
virtual void prePaintWindow(EffectWindow *w, WindowPrePaintData &data, int time);
|
||||
virtual void paintEffectFrame(KWin::EffectFrame* frame, QRegion region, double opacity, double frameOpacity);
|
||||
virtual void windowClosed(EffectWindow* w);
|
||||
|
||||
static bool supported();
|
||||
|
||||
public slots:
|
||||
void toggle();
|
||||
void toggleWindow();
|
||||
void slotWindowClosed(EffectWindow *w);
|
||||
|
||||
protected:
|
||||
bool loadData();
|
||||
|
|
|
@ -31,6 +31,7 @@ LoginEffect::LoginEffect()
|
|||
: progress(1.0)
|
||||
, login_window(NULL)
|
||||
{
|
||||
connect(effects, SIGNAL(windowClosed(EffectWindow*)), this, SLOT(slotWindowClosed(EffectWindow*)));
|
||||
}
|
||||
|
||||
void LoginEffect::prePaintScreen(ScreenPrePaintData& data, int time)
|
||||
|
@ -72,7 +73,7 @@ void LoginEffect::postPaintScreen()
|
|||
effects->postPaintScreen();
|
||||
}
|
||||
|
||||
void LoginEffect::windowClosed(EffectWindow* w)
|
||||
void LoginEffect::slotWindowClosed(EffectWindow* w)
|
||||
{
|
||||
if (isLoginSplash(w)) {
|
||||
if (login_window)
|
||||
|
|
|
@ -30,13 +30,17 @@ namespace KWin
|
|||
class LoginEffect
|
||||
: public Effect
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
LoginEffect();
|
||||
virtual void prePaintScreen(ScreenPrePaintData& data, int time);
|
||||
virtual void postPaintScreen();
|
||||
virtual void prePaintWindow(EffectWindow* w, WindowPrePaintData& data, int time);
|
||||
virtual void paintWindow(EffectWindow* w, int mask, QRegion region, WindowPaintData& data);
|
||||
virtual void windowClosed(EffectWindow* w);
|
||||
|
||||
public Q_SLOTS:
|
||||
void slotWindowClosed(EffectWindow *w);
|
||||
|
||||
private:
|
||||
bool isLoginSplash(EffectWindow* w);
|
||||
double progress; // 0-1
|
||||
|
|
|
@ -61,6 +61,7 @@ LogoutEffect::LogoutEffect()
|
|||
#endif
|
||||
reconfigure(ReconfigureAll);
|
||||
connect(effects, SIGNAL(windowAdded(EffectWindow*)), this, SLOT(slotWindowAdded(EffectWindow*)));
|
||||
connect(effects, SIGNAL(windowClosed(EffectWindow*)), this, SLOT(slotWindowClosed(EffectWindow*)));
|
||||
}
|
||||
|
||||
LogoutEffect::~LogoutEffect()
|
||||
|
@ -307,7 +308,7 @@ void LogoutEffect::slotWindowAdded(EffectWindow* w)
|
|||
ignoredWindows.append(w);
|
||||
}
|
||||
|
||||
void LogoutEffect::windowClosed(EffectWindow* w)
|
||||
void LogoutEffect::slotWindowClosed(EffectWindow* w)
|
||||
{
|
||||
if (w == logoutWindow) {
|
||||
logoutWindowClosed = true;
|
||||
|
|
|
@ -44,11 +44,11 @@ public:
|
|||
virtual void paintScreen(int mask, QRegion region, ScreenPaintData& data);
|
||||
virtual void postPaintScreen();
|
||||
virtual void paintWindow(EffectWindow* w, int mask, QRegion region, WindowPaintData& data);
|
||||
virtual void windowClosed(EffectWindow* w);
|
||||
virtual void windowDeleted(EffectWindow* w);
|
||||
virtual void propertyNotify(EffectWindow* w, long a);
|
||||
public Q_SLOTS:
|
||||
void slotWindowAdded(EffectWindow* w);
|
||||
void slotWindowClosed(EffectWindow *w);
|
||||
private:
|
||||
bool isLogoutDialog(EffectWindow* w);
|
||||
double progress; // 0-1
|
||||
|
|
|
@ -99,6 +99,7 @@ PresentWindowsEffect::PresentWindowsEffect()
|
|||
shortcutClass = c->globalShortcut();
|
||||
reconfigure(ReconfigureAll);
|
||||
connect(effects, SIGNAL(windowAdded(EffectWindow*)), this, SLOT(slotWindowAdded(EffectWindow*)));
|
||||
connect(effects, SIGNAL(windowClosed(EffectWindow*)), this, SLOT(slotWindowClosed(EffectWindow*)));
|
||||
}
|
||||
|
||||
PresentWindowsEffect::~PresentWindowsEffect()
|
||||
|
@ -385,7 +386,7 @@ void PresentWindowsEffect::slotWindowAdded(EffectWindow *w)
|
|||
}
|
||||
}
|
||||
|
||||
void PresentWindowsEffect::windowClosed(EffectWindow *w)
|
||||
void PresentWindowsEffect::slotWindowClosed(EffectWindow *w)
|
||||
{
|
||||
if (m_managerWindow == w)
|
||||
m_managerWindow = NULL;
|
||||
|
|
|
@ -102,7 +102,6 @@ public:
|
|||
virtual void paintWindow(EffectWindow *w, int mask, QRegion region, WindowPaintData &data);
|
||||
|
||||
// User interaction
|
||||
virtual void windowClosed(EffectWindow *w);
|
||||
virtual void windowDeleted(EffectWindow *w);
|
||||
virtual void windowGeometryShapeChanged(EffectWindow* w, const QRect& old);
|
||||
virtual bool borderActivated(ElectricBorder border);
|
||||
|
@ -161,6 +160,7 @@ public slots:
|
|||
void globalShortcutChangedClass(const QKeySequence& seq);
|
||||
// EffectsHandler
|
||||
void slotWindowAdded(EffectWindow *w);
|
||||
void slotWindowClosed(EffectWindow *w);
|
||||
|
||||
private slots:
|
||||
void closeWindow();
|
||||
|
|
|
@ -29,6 +29,7 @@ ScaleInEffect::ScaleInEffect()
|
|||
: Effect()
|
||||
{
|
||||
connect(effects, SIGNAL(windowAdded(EffectWindow*)), this, SLOT(slotWindowAdded(EffectWindow*)));
|
||||
connect(effects, SIGNAL(windowClosed(EffectWindow*)), this, SLOT(slotWindowClosed(EffectWindow*)));
|
||||
}
|
||||
|
||||
void ScaleInEffect::prePaintScreen(ScreenPrePaintData& data, int time)
|
||||
|
@ -88,7 +89,7 @@ void ScaleInEffect::slotWindowAdded(EffectWindow* c)
|
|||
}
|
||||
}
|
||||
|
||||
void ScaleInEffect::windowClosed(EffectWindow* c)
|
||||
void ScaleInEffect::slotWindowClosed(EffectWindow* c)
|
||||
{
|
||||
mTimeLineWindows.remove(c);
|
||||
}
|
||||
|
|
|
@ -37,9 +37,9 @@ public:
|
|||
virtual void paintWindow(EffectWindow* w, int mask, QRegion region, WindowPaintData& data);
|
||||
virtual void postPaintWindow(EffectWindow* w);
|
||||
// TODO react also on virtual desktop changes
|
||||
virtual void windowClosed(EffectWindow* c);
|
||||
public Q_SLOTS:
|
||||
void slotWindowAdded(EffectWindow* c);
|
||||
void slotWindowClosed(EffectWindow *c);
|
||||
private:
|
||||
bool isScaleWindow(EffectWindow* w);
|
||||
QHash< const EffectWindow*, TimeLine > mTimeLineWindows;
|
||||
|
|
|
@ -37,6 +37,7 @@ SheetEffect::SheetEffect()
|
|||
{
|
||||
reconfigure(ReconfigureAll);
|
||||
connect(effects, SIGNAL(windowAdded(EffectWindow*)), this, SLOT(slotWindowAdded(EffectWindow*)));
|
||||
connect(effects, SIGNAL(windowClosed(EffectWindow*)), this, SLOT(slotWindowClosed(EffectWindow*)));
|
||||
}
|
||||
|
||||
bool SheetEffect::supported()
|
||||
|
@ -141,7 +142,7 @@ void SheetEffect::slotWindowAdded(EffectWindow* w)
|
|||
w->addRepaintFull();
|
||||
}
|
||||
|
||||
void SheetEffect::windowClosed(EffectWindow* w)
|
||||
void SheetEffect::slotWindowClosed(EffectWindow* w)
|
||||
{
|
||||
if (!isSheetWindow(w))
|
||||
return;
|
||||
|
|
|
@ -39,13 +39,13 @@ public:
|
|||
virtual void paintWindow(EffectWindow* w, int mask, QRegion region, WindowPaintData& data);
|
||||
virtual void postPaintWindow(EffectWindow* w);
|
||||
|
||||
virtual void windowClosed(EffectWindow* c);
|
||||
virtual void windowDeleted(EffectWindow* c);
|
||||
|
||||
static bool supported();
|
||||
|
||||
public Q_SLOTS:
|
||||
void slotWindowAdded(EffectWindow* c);
|
||||
void slotWindowClosed(EffectWindow *c);
|
||||
private:
|
||||
class WindowInfo;
|
||||
typedef QMap< const EffectWindow*, WindowInfo > InfoMap;
|
||||
|
|
|
@ -39,6 +39,7 @@ SlidingPopupsEffect::SlidingPopupsEffect()
|
|||
unsigned char dummy = 0;
|
||||
XChangeProperty(display(), rootWindow(), mAtom, mAtom, 8, PropModeReplace, &dummy, 1);
|
||||
connect(effects, SIGNAL(windowAdded(EffectWindow*)), this, SLOT(slotWindowAdded(EffectWindow*)));
|
||||
connect(effects, SIGNAL(windowClosed(EffectWindow*)), this, SLOT(slotWindowClosed(EffectWindow*)));
|
||||
}
|
||||
|
||||
SlidingPopupsEffect::~SlidingPopupsEffect()
|
||||
|
@ -147,7 +148,7 @@ void SlidingPopupsEffect::slotWindowAdded(EffectWindow *w)
|
|||
}
|
||||
}
|
||||
|
||||
void SlidingPopupsEffect::windowClosed(EffectWindow* w)
|
||||
void SlidingPopupsEffect::slotWindowClosed(EffectWindow* w)
|
||||
{
|
||||
propertyNotify(w, mAtom);
|
||||
if (w->isOnCurrentDesktop() && !w->isMinimized() && mWindowsData.contains(w)) {
|
||||
|
|
|
@ -39,12 +39,12 @@ public:
|
|||
virtual void paintWindow(EffectWindow* w, int mask, QRegion region, WindowPaintData& data);
|
||||
virtual void postPaintWindow(EffectWindow* w);
|
||||
// TODO react also on virtual desktop changes
|
||||
virtual void windowClosed(EffectWindow* c);
|
||||
virtual void windowDeleted(EffectWindow* c);
|
||||
virtual void propertyNotify(EffectWindow* w, long a);
|
||||
|
||||
public Q_SLOTS:
|
||||
void slotWindowAdded(EffectWindow *c);
|
||||
void slotWindowClosed(EffectWindow *c);
|
||||
private:
|
||||
enum Position {
|
||||
West = 0,
|
||||
|
|
|
@ -35,6 +35,7 @@ SnapHelperEffect::SnapHelperEffect()
|
|||
{
|
||||
m_timeline.setCurveShape(TimeLine::LinearCurve);
|
||||
reconfigure(ReconfigureAll);
|
||||
connect(effects, SIGNAL(windowClosed(EffectWindow*)), this, SLOT(slotWindowClosed(EffectWindow*)));
|
||||
|
||||
/*if ( effects->compositingType() == XRenderCompositing )
|
||||
{
|
||||
|
@ -187,7 +188,7 @@ void SnapHelperEffect::postPaintScreen()
|
|||
}
|
||||
}
|
||||
|
||||
void SnapHelperEffect::windowClosed(EffectWindow* w)
|
||||
void SnapHelperEffect::slotWindowClosed(EffectWindow* w)
|
||||
{
|
||||
if (m_window == w) {
|
||||
m_window->refWindow();
|
||||
|
|
|
@ -29,6 +29,7 @@ namespace KWin
|
|||
class SnapHelperEffect
|
||||
: public Effect
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
SnapHelperEffect();
|
||||
~SnapHelperEffect();
|
||||
|
@ -37,11 +38,13 @@ public:
|
|||
|
||||
virtual void prePaintScreen(ScreenPrePaintData &data, int time);
|
||||
virtual void postPaintScreen();
|
||||
virtual void windowClosed(EffectWindow* w);
|
||||
virtual void windowUserMovedResized(EffectWindow* w, bool first, bool last);
|
||||
|
||||
static bool supported();
|
||||
|
||||
public Q_SLOTS:
|
||||
void slotWindowClosed(EffectWindow *w);
|
||||
|
||||
private:
|
||||
bool m_active;
|
||||
EffectWindow* m_window;
|
||||
|
|
|
@ -38,6 +38,7 @@ ThumbnailAsideEffect::ThumbnailAsideEffect()
|
|||
a->setText(i18n("Toggle Thumbnail for Current Window"));
|
||||
a->setGlobalShortcut(KShortcut(Qt::CTRL + Qt::META + Qt::Key_T));
|
||||
connect(a, SIGNAL(triggered(bool)), this, SLOT(toggleCurrentThumbnail()));
|
||||
connect(effects, SIGNAL(windowClosed(EffectWindow*)), this, SLOT(slotWindowClosed(EffectWindow*)));
|
||||
reconfigure(ReconfigureAll);
|
||||
}
|
||||
|
||||
|
@ -87,7 +88,7 @@ void ThumbnailAsideEffect::windowGeometryShapeChanged(EffectWindow* w, const QRe
|
|||
}
|
||||
}
|
||||
|
||||
void ThumbnailAsideEffect::windowClosed(EffectWindow* w)
|
||||
void ThumbnailAsideEffect::slotWindowClosed(EffectWindow* w)
|
||||
{
|
||||
removeThumbnail(w);
|
||||
}
|
||||
|
|
|
@ -45,9 +45,9 @@ public:
|
|||
virtual void paintScreen(int mask, QRegion region, ScreenPaintData& data);
|
||||
virtual void windowDamaged(EffectWindow* w, const QRect& damage);
|
||||
virtual void windowGeometryShapeChanged(EffectWindow* w, const QRect& old);
|
||||
virtual void windowClosed(EffectWindow* w);
|
||||
private slots:
|
||||
void toggleCurrentThumbnail();
|
||||
void slotWindowClosed(EffectWindow *w);
|
||||
private:
|
||||
void addThumbnail(EffectWindow* w);
|
||||
void removeThumbnail(EffectWindow* w);
|
||||
|
|
|
@ -166,6 +166,7 @@ WobblyWindowsEffect::WobblyWindowsEffect()
|
|||
{
|
||||
reconfigure(ReconfigureAll);
|
||||
connect(effects, SIGNAL(windowAdded(EffectWindow*)), this, SLOT(slotWindowAdded(EffectWindow*)));
|
||||
connect(effects, SIGNAL(windowClosed(EffectWindow*)), this, SLOT(slotWindowClosed(EffectWindow*)));
|
||||
}
|
||||
|
||||
WobblyWindowsEffect::~WobblyWindowsEffect()
|
||||
|
@ -477,7 +478,7 @@ void WobblyWindowsEffect::slotWindowAdded(EffectWindow* w)
|
|||
}
|
||||
}
|
||||
|
||||
void WobblyWindowsEffect::windowClosed(EffectWindow* w)
|
||||
void WobblyWindowsEffect::slotWindowClosed(EffectWindow* w)
|
||||
{
|
||||
if (windows.contains(w)) {
|
||||
WindowWobblyInfos& wwi = windows[w];
|
||||
|
|
|
@ -36,7 +36,6 @@ public:
|
|||
virtual void paintWindow(EffectWindow* w, int mask, QRegion region, WindowPaintData& data);
|
||||
virtual void postPaintScreen();
|
||||
virtual void windowUserMovedResized(EffectWindow* c, bool first, bool last);
|
||||
virtual void windowClosed(EffectWindow* w);
|
||||
|
||||
// Wobbly model parameters
|
||||
void setStiffness(qreal stiffness);
|
||||
|
@ -60,6 +59,7 @@ public:
|
|||
|
||||
public Q_SLOTS:
|
||||
void slotWindowAdded(EffectWindow *w);
|
||||
void slotWindowClosed(EffectWindow *w);
|
||||
|
||||
private:
|
||||
|
||||
|
|
|
@ -131,10 +131,6 @@ void Effect::windowOpacityChanged(EffectWindow*, double)
|
|||
{
|
||||
}
|
||||
|
||||
void Effect::windowClosed(EffectWindow*)
|
||||
{
|
||||
}
|
||||
|
||||
void Effect::windowDeleted(EffectWindow*)
|
||||
{
|
||||
}
|
||||
|
|
|
@ -445,7 +445,6 @@ public:
|
|||
/** called when the geometry changed during moving/resizing. */
|
||||
virtual void windowMoveResizeGeometryUpdate(EffectWindow* c, const QRect& geometry);
|
||||
virtual void windowOpacityChanged(EffectWindow* c, double old_opacity);
|
||||
virtual void windowClosed(EffectWindow* c);
|
||||
virtual void windowDeleted(EffectWindow* c);
|
||||
virtual void windowActivated(EffectWindow* c);
|
||||
virtual void windowMinimized(EffectWindow* c);
|
||||
|
@ -844,6 +843,15 @@ Q_SIGNALS:
|
|||
* @since 4.7
|
||||
**/
|
||||
void windowAdded(EffectWindow *w);
|
||||
/**
|
||||
* Signal emitted when a window is being removed from the Workspace.
|
||||
* An effect which wants to animate the window closing should connect
|
||||
* to this signal and reference the window by using
|
||||
* @link EffectWindow::refWindow
|
||||
* @param w The window which is being closed
|
||||
* @since 4.7
|
||||
**/
|
||||
void windowClosed(EffectWindow *w);
|
||||
|
||||
protected:
|
||||
QVector< EffectPair > loaded_effects;
|
||||
|
|
|
@ -81,8 +81,8 @@ bool Unmanaged::track(Window w)
|
|||
void Unmanaged::release()
|
||||
{
|
||||
Deleted* del = Deleted::create(this);
|
||||
if (effects) {
|
||||
static_cast<EffectsHandlerImpl*>(effects)->windowClosed(effectWindow());
|
||||
emit unmanagedClosed(this);
|
||||
if (scene) {
|
||||
scene->windowClosed(this, del);
|
||||
}
|
||||
finishCompositing();
|
||||
|
|
|
@ -46,6 +46,8 @@ public:
|
|||
protected:
|
||||
virtual void debug(QDebug& stream) const;
|
||||
virtual bool shouldUnredirect() const;
|
||||
Q_SIGNALS:
|
||||
void unmanagedClosed(KWin::Unmanaged*);
|
||||
private:
|
||||
virtual ~Unmanaged(); // use release()
|
||||
// handlers for X11 events
|
||||
|
|
13
workspace.h
13
workspace.h
|
@ -180,6 +180,19 @@ public:
|
|||
void reserveElectricBorderActions(bool reserve);
|
||||
void reserveElectricBorderSwitching(bool reserve);
|
||||
|
||||
/**
|
||||
* @return List of clients currently managed by Workspace
|
||||
**/
|
||||
const ClientList &clientList() const {
|
||||
return clients;
|
||||
}
|
||||
/**
|
||||
* @return List of unmanaged "clients" currently registered in Workspace
|
||||
**/
|
||||
const UnmanagedList &unmanagedList() const {
|
||||
return unmanaged;
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// Tiling
|
||||
public:
|
||||
|
|
Loading…
Reference in New Issue