KWin
Loading...
Searching...
No Matches
mousemark.h
Go to the documentation of this file.
1/*
2 KWin - the KDE window manager
3 This file is part of the KDE project.
4
5 SPDX-FileCopyrightText: 2007 Lubos Lunak <l.lunak@kde.org>
6 SPDX-FileCopyrightText: 2023 Andrew Shark <ashark at linuxcomp.ru>
7
8 SPDX-License-Identifier: GPL-2.0-or-later
9*/
10
11#pragma once
12
13#include "effect/effect.h"
14#include "opengl/glutils.h"
15
16namespace KWin
17{
18
20 : public Effect
21{
22 Q_OBJECT
23 Q_PROPERTY(int width READ configuredWidth)
24 Q_PROPERTY(QColor color READ configuredColor)
25 Q_PROPERTY(Qt::KeyboardModifiers modifiers READ freedraw_modifiers)
26 Q_PROPERTY(Qt::KeyboardModifiers modifiers READ arrowdraw_modifiers)
27public:
29 ~MouseMarkEffect() override;
30 void reconfigure(ReconfigureFlags) override;
31 void paintScreen(const RenderTarget &renderTarget, const RenderViewport &viewport, int mask, const QRegion &region, Output *screen) override;
32 bool isActive() const override;
33 int requestedEffectChainPosition() const override;
34
35 // for properties
36 int configuredWidth() const
37 {
38 return width;
39 }
40 QColor configuredColor() const
41 {
42 return color;
43 }
44 Qt::KeyboardModifiers freedraw_modifiers() const
45 {
46 return m_freedraw_modifiers;
47 }
48 Qt::KeyboardModifiers arrowdraw_modifiers() const
49 {
50 return m_freedraw_modifiers;
51 }
52private Q_SLOTS:
53 void clear();
54 void clearLast();
55 void slotMouseChanged(const QPointF &pos, const QPointF &old,
56 Qt::MouseButtons buttons, Qt::MouseButtons oldbuttons,
57 Qt::KeyboardModifiers modifiers, Qt::KeyboardModifiers oldmodifiers);
58 void screenLockingChanged(bool locked);
59
60private:
61 typedef QList<QPointF> Mark;
62 void drawMark(QPainter *painter, const Mark &mark);
63 static Mark createArrow(QPointF arrow_head, QPointF arrow_tail);
64 QList<Mark> marks;
65 Mark drawing;
66 QPointF arrow_tail;
67 int width;
68 QColor color;
69 Qt::KeyboardModifiers m_freedraw_modifiers;
70 Qt::KeyboardModifiers m_arrowdraw_modifiers;
71};
72
73} // namespace
Base class for all KWin effects.
Definition effect.h:535
int configuredWidth() const
Definition mousemark.h:36
Qt::KeyboardModifiers arrowdraw_modifiers() const
Definition mousemark.h:48
void reconfigure(ReconfigureFlags) override
Definition mousemark.cpp:67
Qt::KeyboardModifiers freedraw_modifiers() const
Definition mousemark.h:44
void paintScreen(const RenderTarget &renderTarget, const RenderViewport &viewport, int mask, const QRegion &region, Output *screen) override
int requestedEffectChainPosition() const override
bool isActive() const override
QColor configuredColor() const
Definition mousemark.h:40
Qt::KeyboardModifiers modifiers
Definition mousemark.h:25