diff --git a/abstract_client.cpp b/abstract_client.cpp
index 3c4742c5a1..a57eacb410 100644
--- a/abstract_client.cpp
+++ b/abstract_client.cpp
@@ -93,4 +93,14 @@ xcb_timestamp_t AbstractClient::userTime() const
return XCB_TIME_CURRENT_TIME;
}
+void AbstractClient::setSkipSwitcher(bool set)
+{
+ set = rules()->checkSkipSwitcher(set);
+ if (set == skipSwitcher())
+ return;
+ m_skipSwitcher = set;
+ updateWindowRules(Rules::SkipSwitcher);
+ emit skipSwitcherChanged();
+}
+
}
diff --git a/abstract_client.h b/abstract_client.h
index ae6ef98e6c..cfd4c660ba 100644
--- a/abstract_client.h
+++ b/abstract_client.h
@@ -22,12 +22,12 @@ along with this program. If not, see .
#include "toplevel.h"
#include "options.h"
+#include "rules.h"
namespace KWin
{
class TabGroup;
-class WindowRules;
namespace TabBox
{
@@ -42,6 +42,10 @@ class AbstractClient : public Toplevel
* For change connect to the visibleChanged signal on the Client's Group.
**/
Q_PROPERTY(bool isCurrentTab READ isCurrentTab)
+ /**
+ * Whether the Client should be excluded from window switching effects.
+ **/
+ Q_PROPERTY(bool skipSwitcher READ skipSwitcher WRITE setSkipSwitcher NOTIFY skipSwitcherChanged)
public:
virtual ~AbstractClient();
@@ -51,6 +55,10 @@ public:
bool isFirstInTabBox() const {
return m_firstInTabBox;
}
+ bool skipSwitcher() const {
+ return m_skipSwitcher;
+ }
+ void setSkipSwitcher(bool set);
virtual void updateMouseGrab();
virtual QString caption(bool full = true, bool stripped = false) const = 0;
@@ -61,7 +69,6 @@ public:
virtual bool wantsTabFocus() const = 0;
virtual bool isFullScreen() const = 0;
virtual const QIcon &icon() const = 0;
- virtual bool skipSwitcher() const = 0;
// TODO: remove boolean trap
virtual AbstractClient *findModal(bool allow_itself = false) = 0;
virtual void cancelAutoRaise() = 0;
@@ -116,6 +123,7 @@ public:
virtual void checkWorkspacePosition(QRect oldGeometry = QRect(), int oldDesktop = -2) = 0;
virtual xcb_timestamp_t userTime() const;
virtual void demandAttention(bool set = true) = 0;
+ virtual void updateWindowRules(Rules::Types selection) = 0;
virtual void growHorizontal();
virtual void shrinkHorizontal();
@@ -165,6 +173,9 @@ public:
public Q_SLOTS:
virtual void closeWindow() = 0;
+Q_SIGNALS:
+ void skipSwitcherChanged();
+
protected:
AbstractClient();
void setFirstInTabBox(bool enable) {
@@ -176,6 +187,7 @@ protected:
private:
QSharedPointer m_tabBoxClient;
bool m_firstInTabBox = false;
+ bool m_skipSwitcher = false;
};
}
diff --git a/client.cpp b/client.cpp
index e09035cef9..f700adc167 100644
--- a/client.cpp
+++ b/client.cpp
@@ -111,7 +111,6 @@ Client::Client()
, m_transientForId(XCB_WINDOW_NONE)
, m_originalTransientForId(XCB_WINDOW_NONE)
, shade_below(NULL)
- , skip_switcher(false)
, m_motif(atoms->motif_wm_hints)
, blocks_compositing(false)
, m_cursor(Qt::ArrowCursor)
@@ -1299,16 +1298,6 @@ void Client::setSkipPager(bool b)
emit skipPagerChanged();
}
-void Client::setSkipSwitcher(bool set)
-{
- set = rules()->checkSkipSwitcher(set);
- if (set == skipSwitcher())
- return;
- skip_switcher = set;
- updateWindowRules(Rules::SkipSwitcher);
- emit skipSwitcherChanged();
-}
-
void Client::setModal(bool m)
{
// Qt-3.2 can have even modal normal windows :(
diff --git a/client.h b/client.h
index 50a36fa29b..2399479eea 100644
--- a/client.h
+++ b/client.h
@@ -222,10 +222,6 @@ class Client
**/
Q_PROPERTY(bool wantsInput READ wantsInput)
Q_PROPERTY(QIcon icon READ icon NOTIFY iconChanged)
- /**
- * Whether the Client should be excluded from window switching effects.
- **/
- Q_PROPERTY(bool skipSwitcher READ skipSwitcher WRITE setSkipSwitcher NOTIFY skipSwitcherChanged)
/**
* Indicates that the window should not be included on a taskbar.
**/
@@ -307,7 +303,7 @@ public:
void removeRule(Rules* r);
void setupWindowRules(bool ignore_temporary);
void applyWindowRules();
- void updateWindowRules(Rules::Types selection);
+ void updateWindowRules(Rules::Types selection) override;
void updateFullscreenMonitors(NETFullscreenMonitors topology);
/**
@@ -405,9 +401,6 @@ public:
bool skipPager() const;
void setSkipPager(bool);
- bool skipSwitcher() const override;
- void setSkipSwitcher(bool set);
-
bool keepAbove() const override;
void setKeepAbove(bool) override;
bool keepBelow() const override;
@@ -710,7 +703,6 @@ Q_SIGNALS:
void minimizedChanged();
void moveResizedChanged();
void iconChanged();
- void skipSwitcherChanged();
void skipTaskbarChanged();
void skipPagerChanged();
void paletteChanged(const QPalette &p);
@@ -902,7 +894,6 @@ private:
uint skip_taskbar : 1;
uint original_skip_taskbar : 1; ///< Unaffected by KWin
uint skip_pager : 1;
- uint skip_switcher : 1;
Xcb::MotifHints m_motif;
uint keep_below : 1; ///< NET::KeepBelow
uint minimized : 1;
@@ -1127,11 +1118,6 @@ inline bool Client::skipPager() const
return skip_pager;
}
-inline bool Client::skipSwitcher() const
-{
- return skip_switcher;
-}
-
inline bool Client::keepAbove() const
{
return keep_above;