1/*
2 This file is part of the KDE libraries
3 SPDX-FileCopyrightText: 2000 Carsten Pfeiffer <pfeiffer@kde.org>
4
5 SPDX-License-Identifier: LGPL-2.0-or-later
6*/
7
8#ifndef KCURSOR_P_H
9#define KCURSOR_P_H
10
11#include <QCursor>
12#include <QHash>
13#include <QObject>
14#include <QTimer>
15
16class QWidget;
17
18/**
19 * @internal
20 * I don't want the eventFilter to be in KCursor, so we have another class
21 * for that stuff
22 * @author John Firebaugh <jfirebaugh@kde.org>
23 * @author Carsten Pfeiffer <pfeiffer@kde.org>
24 */
25class KCursorPrivateAutoHideEventFilter : public QObject
26{
27 Q_OBJECT
28
29public:
30 explicit KCursorPrivateAutoHideEventFilter(QWidget *widget);
31 ~KCursorPrivateAutoHideEventFilter() override;
32
33 bool eventFilter(QObject *o, QEvent *e) override;
34
35 void resetWidget();
36
37private Q_SLOTS:
38 void hideCursor();
39 void unhideCursor();
40
41private:
42 QWidget *mouseWidget() const;
43
44 QTimer m_autoHideTimer;
45 QWidget *m_widget;
46 bool m_wasMouseTracking;
47 bool m_isCursorHidden;
48 bool m_isOwnCursor;
49 QCursor m_oldCursor;
50};
51
52/**
53 * @internal
54 * @author Carsten Pfeiffer <pfeiffer@kde.org>
55 * @author John Firebaugh <jfirebaugh@kde.org>
56 */
57class KCursorPrivate : public QObject
58{
59 friend class KCursor; // to shut up the compiler
60 Q_OBJECT
61
62public:
63 static KCursorPrivate *self();
64
65 void setAutoHideCursor(QWidget *w, bool enable, bool customEventFilter);
66 bool eventFilter(QObject *o, QEvent *e) override;
67
68 int hideCursorDelay;
69
70private Q_SLOTS:
71 void slotViewportDestroyed(QObject *);
72 void slotWidgetDestroyed(QObject *);
73
74private:
75 KCursorPrivate();
76 ~KCursorPrivate() override;
77
78 bool enabled;
79 static KCursorPrivate *s_self;
80
81 QHash<QObject *, KCursorPrivateAutoHideEventFilter *> m_eventFilters;
82};
83
84#endif // KCURSOR_PRIVATE_H
85

source code of kwidgetsaddons/src/kcursor_p.h