KWin
Loading...
Searching...
No Matches
accessibilityintegration.cpp
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: 2020 Vlad Zahorodnii <vlad.zahorodnii@kde.org>
6
7 SPDX-License-Identifier: GPL-2.0-or-later
8*/
9
11
12using namespace QAccessibleClient; // Whatever, sue me...
13
14namespace KWin
15{
16
18 : QObject(parent)
19{
20}
21
23{
24 if (m_isFocusTrackingEnabled == enabled) {
25 return;
26 }
27 m_isFocusTrackingEnabled = enabled;
28 updateAccessibilityRegistry();
29}
30
32{
33 return m_isFocusTrackingEnabled;
34}
35
37{
38 if (m_isTextCaretTrackingEnabled == enabled) {
39 return;
40 }
41 m_isTextCaretTrackingEnabled = enabled;
42 updateAccessibilityRegistry();
43}
44
46{
47 return m_isTextCaretTrackingEnabled;
48}
49
50void ZoomAccessibilityIntegration::updateAccessibilityRegistry()
51{
52 Registry::EventListeners eventListeners = Registry::NoEventListeners;
53
55 eventListeners |= Registry::TextCaretMoved;
56 }
58 eventListeners |= Registry::Focus;
59 }
60
61 if (eventListeners == Registry::NoEventListeners) {
62 destroyAccessibilityRegistry();
63 return;
64 }
65 if (!m_accessibilityRegistry) {
66 createAccessibilityRegistry();
67 }
68
69 m_accessibilityRegistry->subscribeEventListeners(eventListeners);
70}
71
72void ZoomAccessibilityIntegration::createAccessibilityRegistry()
73{
74 m_accessibilityRegistry = new Registry(this);
75
76 connect(m_accessibilityRegistry, &Registry::textCaretMoved,
77 this, &ZoomAccessibilityIntegration::slotFocusChanged);
78 connect(m_accessibilityRegistry, &Registry::focusChanged,
79 this, &ZoomAccessibilityIntegration::slotFocusChanged);
80}
81
82void ZoomAccessibilityIntegration::destroyAccessibilityRegistry()
83{
84 if (!m_accessibilityRegistry) {
85 return;
86 }
87
88 disconnect(m_accessibilityRegistry, nullptr, this, nullptr);
89
90 m_accessibilityRegistry->deleteLater();
91 m_accessibilityRegistry = nullptr;
92}
93
94void ZoomAccessibilityIntegration::slotFocusChanged(const AccessibleObject &object)
95{
96 Q_EMIT focusPointChanged(object.focusPoint());
97}
98
99} // namespace KWin
100
101#include "moc_accessibilityintegration.cpp"
void focusPointChanged(const QPoint &point)
ZoomAccessibilityIntegration(QObject *parent=nullptr)