17#include <KDecoration2/DecoratedClient>
18#include <KDecoration2/Decoration>
31 , ApplicationMenuEnabledDecoratedClientPrivate(decoratedClient, decoration)
33 , m_clientSize(window->clientSize().toSize())
43 const auto oldSize = m_clientSize;
44 m_clientSize = m_window->
clientSize().toSize();
45 if (oldSize.width() != m_clientSize.width()) {
48 if (oldSize.height() != m_clientSize.height()) {
78 m_toolTipWakeUp.setSingleShot(
true);
79 connect(&m_toolTipWakeUp, &QTimer::timeout,
this, [
this]() {
80 int fallAsleepDelay = QApplication::style()->styleHint(QStyle::SH_ToolTip_FallAsleepDelay);
81 this->m_toolTipFallAsleep.setRemainingTime(fallAsleepDelay);
83 QToolTip::showText(
Cursors::self()->mouse()->pos().toPoint(), this->m_toolTipText);
84 m_toolTipShowing =
true;
90 if (m_toolTipShowing) {
100#define DELEGATE(type, name, clientName) \
101 type DecoratedClientImpl::name() const \
103 return m_window->clientName(); \
106#define DELEGATE2(type, name) DELEGATE(type, name, name)
111DELEGATE(
bool, isMaximizeable, isMaximizable)
112DELEGATE(
bool, isMinimizeable, isMinimizable)
114DELEGATE(
bool, isMoveable, isMovable)
115DELEGATE(
bool, isResizeable, isResizable)
125#define DELEGATE(type, name, clientName) \
126 type DecoratedClientImpl::name() const \
128 return m_window->clientName(); \
131DELEGATE(
bool, isKeepAbove, keepAbove)
132DELEGATE(
bool, isKeepBelow, keepBelow)
139 if (
X11Window *x11Window = qobject_cast<X11Window *>(m_window)) {
140 return x11Window->window();
147 if (
X11Window *x11Window = qobject_cast<X11Window *>(m_window)) {
148 return x11Window->frameId();
153#define DELEGATE(name, op) \
154 void DecoratedClientImpl::name() \
156 if (m_window->isDeleted()) { \
159 Workspace::self()->performWindowOperation(m_window, Options::op); \
162DELEGATE(requestToggleShade, ShadeOp)
163DELEGATE(requestToggleOnAllDesktops, OnAllDesktopsOp)
164DELEGATE(requestToggleKeepAbove, KeepAboveOp)
165DELEGATE(requestToggleKeepBelow, KeepBelowOp)
169#define DELEGATE(name, clientName) \
170 void DecoratedClientImpl::name() \
172 if (m_window->isDeleted()) { \
175 m_window->clientName(); \
178DELEGATE(requestContextHelp, showContextHelp)
199 return dp->
color(group, role);
210 if (!
workspace()->decorationBridge()->showToolTips()) {
214 m_toolTipText = text;
216 int wakeUpDelay = QApplication::style()->styleHint(QStyle::SH_ToolTip_WakeUpDelay);
217 m_toolTipWakeUp.start(m_toolTipFallAsleep.hasExpired() ? wakeUpDelay : 20);
222 m_toolTipWakeUp.stop();
223 QToolTip::hideText();
224 m_toolTipShowing =
false;
248 decoration()->showApplicationMenu(actionId);
257 QMetaObject::invokeMethod(
258 this, [
this, operation] {
259 delayedRequestToggleMaximization(operation);
261 Qt::QueuedConnection);
274 return m_clientSize.width();
279 return m_clientSize.height();
307 edges |= Qt::LeftEdge;
310 edges |= Qt::TopEdge | Qt::BottomEdge;
314 edges |= Qt::TopEdge;
317 edges |= Qt::RightEdge;
320 edges |= Qt::TopEdge | Qt::BottomEdge;
324 edges |= Qt::BottomEdge;
347#include "moc_decoratedclient.cpp"
bool isMaximizedVertically() const override
void showApplicationMenu(int actionId) override
void requestMinimize() override
QColor color(KDecoration2::ColorGroup group, KDecoration2::ColorRole role) const override
QString windowClass() const override
bool hasApplicationMenu() const override
bool isMaximized() const override
int height() const override
WId windowId() const override
KDecoration2::DecoratedClient * decoratedClient()
void requestClose() override
int width() const override
bool isApplicationMenuActive() const override
void requestToggleMaximization(Qt::MouseButtons buttons) override
DecoratedClientImpl(Window *window, KDecoration2::DecoratedClient *decoratedClient, KDecoration2::Decoration *decoration)
bool isMaximizedHorizontally() const override
Qt::Edges adjacentScreenEdges() const override
~DecoratedClientImpl() override
WId decorationId() const override
void requestHideToolTip() override
QSize size() const override
void requestShowToolTip(const QString &text) override
void requestShowWindowMenu(const QRect &rect) override
void requestShowApplicationMenu(const QRect &rect, int actionId) override
QColor color(KDecoration2::ColorGroup group, KDecoration2::ColorRole role) const
WindowOperation operationMaxButtonClick(Qt::MouseButtons button) const
void maximizeableChanged(bool)
void setMinimized(bool set)
void shadeableChanged(bool)
const Decoration::DecorationPalette * decorationPalette()
void clientGeometryChanged(const QRectF &oldGeometry)
bool applicationMenuActive
bool isOnAllDesktops() const
QSizeF clientSize() const
void hasApplicationMenuChanged(bool)
virtual MaximizeMode requestedMaximizeMode() const
QuickTileMode quickTileMode() const
void keepAboveChanged(bool)
virtual void closeWindow()=0
void minimizeableChanged(bool)
void applicationMenuActiveChanged(bool)
void quickTileModeChanged()
void paletteChanged(const QPalette &p)
void closeableChanged(bool)
void keepBelowChanged(bool)
void setDecoratedClient(Decoration::DecoratedClientImpl *client)
void showApplicationMenu(const QRect &pos, Window *window, int actionId)
void showWindowMenu(const QRect &pos, Window *cl)
void performWindowOperation(KWin::Window *window, Options::WindowOperation op)
static Workspace * self()
#define DELEGATE(type, name, clientName)
#define DELEGATE2(type, name)
@ MaximizeVertical
The window is maximized vertically.