KWin
Loading...
Searching...
No Matches
trackmouse.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: 2006 Lubos Lunak <l.lunak@kde.org>
6 SPDX-FileCopyrightText: 2010 Jorge Mata <matamax123@gmail.com>
7 SPDX-FileCopyrightText: 2018 Vlad Zahorodnii <vlad.zahorodnii@kde.org>
8
9 SPDX-License-Identifier: GPL-2.0-or-later
10*/
11
12#pragma once
13
14#include "effect/effect.h"
15
16class QAction;
17
18namespace KWin
19{
20class GLTexture;
21
23 : public Effect
24{
25 Q_OBJECT
26 Q_PROPERTY(Qt::KeyboardModifiers modifiers READ modifiers)
27 Q_PROPERTY(bool mousePolling READ isMousePolling)
28public:
30 ~TrackMouseEffect() override;
31 void prePaintScreen(ScreenPrePaintData &data, std::chrono::milliseconds presentTime) override;
32 void paintScreen(const RenderTarget &renderTarget, const RenderViewport &viewport, int mask, const QRegion &region, Output *screen) override;
33 void postPaintScreen() override;
34 void reconfigure(ReconfigureFlags) override;
35 bool isActive() const override;
36
37 // for properties
38 Qt::KeyboardModifiers modifiers() const
39 {
40 return m_modifiers;
41 }
42 bool isMousePolling() const
43 {
44 return m_mousePolling;
45 }
46private Q_SLOTS:
47 void toggle();
48 void slotMouseChanged(const QPointF &pos, const QPointF &old,
49 Qt::MouseButtons buttons, Qt::MouseButtons oldbuttons,
50 Qt::KeyboardModifiers modifiers, Qt::KeyboardModifiers oldmodifiers);
51
52private:
53 bool init();
54 void loadTexture();
55 QRect m_lastRect[2];
56 bool m_mousePolling;
57 float m_angle;
58 float m_angleBase;
59 std::unique_ptr<GLTexture> m_texture[2];
60 QAction *m_action;
61 QImage m_image[2];
62 Qt::KeyboardModifiers m_modifiers;
63
64 enum class State {
65 ActivatedByModifiers,
66 ActivatedByShortcut,
67 Inactive
68 };
69 State m_state = State::Inactive;
70};
71
72} // namespace
Base class for all KWin effects.
Definition effect.h:535
void prePaintScreen(ScreenPrePaintData &data, std::chrono::milliseconds presentTime) override
void postPaintScreen() override
void paintScreen(const RenderTarget &renderTarget, const RenderViewport &viewport, int mask, const QRegion &region, Output *screen) override
void reconfigure(ReconfigureFlags) override
bool isMousePolling() const
Definition trackmouse.h:42
Qt::KeyboardModifiers modifiers
Definition trackmouse.h:26
bool isActive() const override