Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_signals_blocker.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2014 Dmitry Kazakov <dimula73@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7#ifndef __KIS_SIGNALS_BLOCKER_H
8#define __KIS_SIGNALS_BLOCKER_H
9
10#include <QObject>
11#include <QVector>
12
29{
30public:
34 KisSignalsBlocker(QObject *o1,
35 QObject *o2,
36 QObject *o3 = 0,
37 QObject *o4 = 0,
38 QObject *o5 = 0,
39 QObject *o6 = 0)
40 {
41 if (o1) addObject(o1);
42 if (o2) addObject(o2);
43 if (o3) addObject(o3);
44 if (o4) addObject(o4);
45 if (o5) addObject(o5);
46 if (o6) addObject(o6);
47
49 }
50
51 KisSignalsBlocker(QObject *object)
52 {
53 addObject(object);
55 }
56
58 {
59 auto it = m_objects.end();
60 auto begin = m_objects.begin();
61
62 while (it != begin) {
63 --it;
64 it->first->blockSignals(it->second);
65 }
66 }
67
68private:
69 void blockObjects() {
70 for (auto it = m_objects.begin(); it != m_objects.end(); ++it) {
71 it->first->blockSignals(true);
72 }
73 }
74
75 inline void addObject(QObject *object) {
76 m_objects.append(qMakePair(object, object->signalsBlocked()));
77 }
78
79private:
80 Q_DISABLE_COPY(KisSignalsBlocker)
81
82private:
84};
85
86#endif /* __KIS_SIGNALS_BLOCKER_H */
KisSignalsBlocker(QObject *object)
void addObject(QObject *object)
QVector< QPair< QObject *, bool > > m_objects
KisSignalsBlocker(QObject *o1, QObject *o2, QObject *o3=0, QObject *o4=0, QObject *o5=0, QObject *o6=0)