Implement borderingScreenEdges for the DecoratedClientImpl
Uses the QuickTileMode of the Client to indicate which borders to remove. This could be extended to be in general when a window borders the screen edge and not just for quick tile mode.
This commit is contained in:
parent
d3a91b67d9
commit
a903fb2c64
2 changed files with 34 additions and 0 deletions
|
@ -86,6 +86,11 @@ DecoratedClientImpl::DecoratedClientImpl(Client *client, KDecoration2::Decorated
|
||||||
decoration->update();
|
decoration->update();
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
connect(client, &Client::quickTileModeChanged, decoratedClient,
|
||||||
|
[this, decoratedClient]() {
|
||||||
|
emit decoratedClient->borderingScreenEdgesChanged(borderingScreenEdges());
|
||||||
|
}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
DecoratedClientImpl::~DecoratedClientImpl() = default;
|
DecoratedClientImpl::~DecoratedClientImpl() = default;
|
||||||
|
@ -188,6 +193,33 @@ bool DecoratedClientImpl::isMaximizedHorizontally() const
|
||||||
return m_client->maximizeMode() & KDecorationDefines::MaximizeHorizontal;
|
return m_client->maximizeMode() & KDecorationDefines::MaximizeHorizontal;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Qt::Edges DecoratedClientImpl::borderingScreenEdges() const
|
||||||
|
{
|
||||||
|
Qt::Edges edges;
|
||||||
|
const KDecorationDefines::QuickTileMode mode = m_client->quickTileMode();
|
||||||
|
if (mode.testFlag(KDecorationDefines::QuickTileLeft)) {
|
||||||
|
edges |= Qt::LeftEdge;
|
||||||
|
if (!mode.testFlag(KDecorationDefines::QuickTileTop) && !mode.testFlag(KDecorationDefines::QuickTileBottom)) {
|
||||||
|
// using complete side
|
||||||
|
edges |= Qt::TopEdge | Qt::BottomEdge;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (mode.testFlag(KDecorationDefines::QuickTileTop)) {
|
||||||
|
edges |= Qt::TopEdge;
|
||||||
|
}
|
||||||
|
if (mode.testFlag(KDecorationDefines::QuickTileRight)) {
|
||||||
|
edges |= Qt::RightEdge;
|
||||||
|
if (!mode.testFlag(KDecorationDefines::QuickTileTop) && !mode.testFlag(KDecorationDefines::QuickTileBottom)) {
|
||||||
|
// using complete side
|
||||||
|
edges |= Qt::TopEdge | Qt::BottomEdge;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (mode.testFlag(KDecorationDefines::QuickTileBottom)) {
|
||||||
|
edges |= Qt::BottomEdge;
|
||||||
|
}
|
||||||
|
return edges;
|
||||||
|
}
|
||||||
|
|
||||||
void DecoratedClientImpl::createRenderer()
|
void DecoratedClientImpl::createRenderer()
|
||||||
{
|
{
|
||||||
if (Compositor::self()->hasScene()) {
|
if (Compositor::self()->hasScene()) {
|
||||||
|
|
|
@ -65,6 +65,8 @@ public:
|
||||||
int width() const override;
|
int width() const override;
|
||||||
WId windowId() const override;
|
WId windowId() const override;
|
||||||
|
|
||||||
|
Qt::Edges borderingScreenEdges() const override;
|
||||||
|
|
||||||
void requestClose() override;
|
void requestClose() override;
|
||||||
void requestContextHelp() override;
|
void requestContextHelp() override;
|
||||||
void requestMaximize(Qt::MouseButtons buttons) override;
|
void requestMaximize(Qt::MouseButtons buttons) override;
|
||||||
|
|
Loading…
Reference in a new issue