Add "SkipSwitcher" to API

Summary:
Adding "SkipSwitcher" to the API, following discussion in
BUG 375921

Depends on / related to D11925 and D11924

Reviewers: hein, #kwin, graesslin

Reviewed By: #kwin, graesslin

Subscribers: davidedmundson, #plasma, ngraham, kwin, #kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D11926
icc-effect-5.14.5
Scott Harvey 2018-04-24 11:53:51 -05:00
parent ebfc713936
commit 8a2a00a4ca
8 changed files with 31 additions and 3 deletions

View File

@ -142,6 +142,7 @@ void AbstractClient::setSkipSwitcher(bool set)
if (set == skipSwitcher())
return;
m_skipSwitcher = set;
doSetSkipSwitcher();
updateWindowRules(Rules::SkipSwitcher);
emit skipSwitcherChanged();
}
@ -186,6 +187,11 @@ void AbstractClient::doSetSkipTaskbar()
}
void AbstractClient::doSetSkipSwitcher()
{
}
void AbstractClient::setIcon(const QIcon &icon)
{
m_icon = icon;
@ -703,6 +709,7 @@ void AbstractClient::setupWindowManagementInterface()
};
updateAppId();
w->setSkipTaskbar(skipTaskbar());
w->setSkipSwitcher(skipSwitcher());
w->setPid(pid());
w->setShadeable(isShadeable());
w->setShaded(isShade());
@ -716,6 +723,11 @@ void AbstractClient::setupWindowManagementInterface()
w->setSkipTaskbar(skipTaskbar());
}
);
connect(this, &AbstractClient::skipSwitcherChanged, w,
[w, this] {
w->setSkipSwitcher(skipSwitcher());
}
);
connect(this, &AbstractClient::captionChanged, w, [w, this] { w->setTitle(caption()); });
connect(this, &AbstractClient::desktopChanged, w,
[w, this] {

View File

@ -786,6 +786,7 @@ protected:
virtual void doSetSkipTaskbar();
virtual void doSetSkipPager();
virtual void doSetSkipSwitcher();
void setupWindowManagementInterface();
void destroyWindowManagementInterface();

View File

@ -1196,6 +1196,11 @@ void Client::doSetSkipPager()
info->setState(skipPager() ? NET::SkipPager : NET::States(0), NET::SkipPager);
}
void Client::doSetSkipSwitcher()
{
info->setState(skipSwitcher() ? NET::SkipSwitcher : NET::States(0), NET::SkipSwitcher);
}
void Client::doSetDesktop(int desktop, int was_desk)
{
Q_UNUSED(desktop)

View File

@ -388,6 +388,7 @@ protected:
void doMinimize() override;
void doSetSkipPager() override;
void doSetSkipTaskbar() override;
void doSetSkipSwitcher() override;
bool belongsToDesktop() const override;
void setGeometryRestore(const QRect &geo) override;
void updateTabGroupStates(TabGroup::States states) override;

View File

@ -756,7 +756,7 @@ void RulesWidget::prefillUnusedValues(const KWindowInfo& info)
CHECKBOX_PREFILL(noborder, , info.frameGeometry() == info.geometry());
CHECKBOX_PREFILL(skiptaskbar, , info.state() & NET::SkipTaskbar);
CHECKBOX_PREFILL(skippager, , info.state() & NET::SkipPager);
CHECKBOX_PREFILL(skipswitcher, , false);
CHECKBOX_PREFILL(skipswitcher, , info.state() & NET::SkipSwitcher);
//CHECKBOX_PREFILL( acceptfocus, );
//CHECKBOX_PREFILL( closeable, );
//CHECKBOX_PREFILL( autogroup, );

View File

@ -159,6 +159,7 @@ bool Client::manage(xcb_window_t w, bool isMapped)
setOriginalSkipTaskbar((info->state() & NET::SkipTaskbar) != 0);
setSkipPager((info->state() & NET::SkipPager) != 0);
setSkipSwitcher((info->state() & NET::SkipSwitcher) != 0);
readFirstInTabBox(firstInTabBoxCookie);
setupCompositing();
@ -557,7 +558,7 @@ bool Client::manage(xcb_window_t w, bool isMapped)
setKeepBelow(rules()->checkKeepBelow(info->state() & NET::KeepBelow, !isMapped));
setOriginalSkipTaskbar(rules()->checkSkipTaskbar(info->state() & NET::SkipTaskbar, !isMapped));
setSkipPager(rules()->checkSkipPager(info->state() & NET::SkipPager, !isMapped));
setSkipSwitcher(rules()->checkSkipSwitcher(false, !isMapped));
setSkipSwitcher(rules()->checkSkipSwitcher(info->state() & NET::SkipSwitcher, !isMapped));
if (info->state() & NET::DemandsAttention)
demandAttention();
if (info->state() & NET::Modal)

View File

@ -95,7 +95,8 @@ RootInfo *RootInfo::create()
NET::Hidden |
NET::FullScreen |
NET::KeepBelow |
NET::DemandsAttention;
NET::DemandsAttention |
NET::SkipSwitcher;
NET::Properties2 properties2 = NET::WM2UserTime |
NET::WM2StartupId |
NET::WM2AllowedActions |
@ -284,6 +285,8 @@ void WinInfo::changeState(NET::States state, NET::States mask)
m_client->setOriginalSkipTaskbar((state & NET::SkipTaskbar) != 0);
if (mask & NET::SkipPager)
m_client->setSkipPager((state & NET::SkipPager) != 0);
if (mask & NET::SkipSwitcher)
m_client->setSkipSwitcher((state & NET::SkipSwitcher) != 0);
if (mask & NET::DemandsAttention)
m_client->demandAttention((state & NET::DemandsAttention) != 0);
if (mask & NET::Modal)

View File

@ -1299,6 +1299,11 @@ void ShellClient::installPlasmaShellSurface(PlasmaShellSurfaceInterface *surface
connect(surface, &PlasmaShellSurfaceInterface::skipTaskbarChanged, this, [this] {
setSkipTaskbar(m_plasmaShellSurface->skipTaskbar());
});
setSkipSwitcher(surface->skipSwitcher());
connect(surface, &PlasmaShellSurfaceInterface::skipSwitcherChanged, this, [this] {
setSkipSwitcher(m_plasmaShellSurface->skipSwitcher());
});
}
void ShellClient::updateShowOnScreenEdge()