File indexing completed on 2024-04-14 14:21:00

0001 /*
0002     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0003     SPDX-FileCopyrightText: 2020 David Redondo <kde@david-redondo.de>
0004 */
0005 
0006 #include "keyboardgrabber_p.h"
0007 
0008 #include <QWindow>
0009 
0010 KeyboardGrabber::KeyboardGrabber(QWindow *window)
0011     : ShortcutInhibition()
0012     , m_grabbedWindow(window)
0013     , m_grabbingKeyboard(false)
0014 {
0015 }
0016 
0017 KeyboardGrabber::~KeyboardGrabber()
0018 {
0019     disableInhibition();
0020 }
0021 
0022 void KeyboardGrabber::enableInhibition()
0023 {
0024     if (m_grabbingKeyboard || !m_grabbedWindow) {
0025         return;
0026     }
0027     m_grabbingKeyboard = m_grabbedWindow->setKeyboardGrabEnabled(true);
0028 }
0029 
0030 void KeyboardGrabber::disableInhibition()
0031 {
0032     if (!m_grabbingKeyboard) {
0033         return;
0034     }
0035     m_grabbingKeyboard = !(m_grabbedWindow->setKeyboardGrabEnabled(false));
0036 }
0037 
0038 bool KeyboardGrabber::shortcutsAreInhibited() const
0039 {
0040     return m_grabbingKeyboard;
0041 }