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 */