File indexing completed on 2024-05-12 16:01:29

0001 /*
0002  *  SPDX-FileCopyrightText: 2016 Dmitry Kazakov <dimula73@gmail.com>
0003  *
0004  *  SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 
0007 #ifndef __KIS_CURSOR_OVERRIDE_HIJACKER_H
0008 #define __KIS_CURSOR_OVERRIDE_HIJACKER_H
0009 
0010 #include <QCursor>
0011 #include <QStack>
0012 #include <QApplication>
0013 
0014 
0015 /**
0016  * @brief The KisCursorOverrideHijacker class stores all
0017  * override cursors in a stack, and resets them back after
0018  * the object is deleted. This is useful when you need to
0019  * show a dialog when a busy cursor is shown.
0020  */
0021 class KisCursorOverrideHijacker
0022 {
0023 public:
0024     KisCursorOverrideHijacker() {
0025         while (qApp->overrideCursor()) {
0026             m_cursorStack.push(*qApp->overrideCursor());
0027             qApp->restoreOverrideCursor();
0028         }
0029     }
0030 
0031     ~KisCursorOverrideHijacker() {
0032         while (!m_cursorStack.isEmpty()) {
0033             qApp->setOverrideCursor(m_cursorStack.pop());
0034         }
0035     }
0036 
0037 private:
0038     QStack<QCursor> m_cursorStack;
0039 };
0040 
0041 #endif /* __KIS_CURSOR_OVERRIDE_HIJACKER_H */