Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_selection_modifier_mapper.cc
Go to the documentation of this file.
1/* This file is part of the KDE project
2 * SPDX-FileCopyrightText: 2016 Michael Abrahams <miabraha@gmail.com>
3 *
4 * SPDX-License-Identifier: LGPL-3.0-or-later
5 */
6
24#include "kis_selection.h"
26#include "kis_config_notifier.h"
27#include "kis_config.h"
28
30
31
32// This numerically serializes modifier flags... let's keep it around for later.
33#if 0
34#include <bitset>
35QString QMOD_BINARY(Qt::KeyboardModifiers m)
36{
37 return QString(std::bitset<sizeof(int) * 8>(m).to_string().c_str());
38};
39#endif
40
42{
43 SelectionAction map(Qt::KeyboardModifiers m);
44 void slotConfigChanged();
45 Qt::KeyboardModifiers replaceModifiers;
46 Qt::KeyboardModifiers intersectModifiers;
47 Qt::KeyboardModifiers addModifiers;
48 Qt::KeyboardModifiers subtractModifiers;
49 Qt::KeyboardModifiers symmetricdifferenceModifiers;
50};
51
52
61
62
66
71
76
77
78void KisSelectionModifierMapper::Private::slotConfigChanged()
79{
80 KisConfig cfg(true);
81 if (!cfg.switchSelectionCtrlAlt()) {
82 replaceModifiers = Qt::ControlModifier;
83 intersectModifiers = (Qt::KeyboardModifiers)(Qt::AltModifier | Qt::ShiftModifier);
84 subtractModifiers = Qt::AltModifier;
85 symmetricdifferenceModifiers = (Qt::KeyboardModifiers)(Qt::ControlModifier | Qt::AltModifier);
86 } else {
87 replaceModifiers = Qt::AltModifier;
88 intersectModifiers = (Qt::KeyboardModifiers)(Qt::ControlModifier | Qt::ShiftModifier);
89 subtractModifiers = Qt::ControlModifier;
90 symmetricdifferenceModifiers = (Qt::KeyboardModifiers)(Qt::AltModifier | Qt::ControlModifier);
91 }
92
93 addModifiers = Qt::ShiftModifier;
94}
95
97{
98 return s_instance->m_d->map(m);
99}
100
101SelectionAction KisSelectionModifierMapper::Private::map(Qt::KeyboardModifiers m)
102{
104 if (m == replaceModifiers) {
105 newAction = SELECTION_REPLACE;
106 } else if (m == intersectModifiers) {
107 newAction = SELECTION_INTERSECT;
108 } else if (m == addModifiers) {
109 newAction = SELECTION_ADD;
110 } else if (m == subtractModifiers) {
111 newAction = SELECTION_SUBTRACT;
112 } else if (m == symmetricdifferenceModifiers) {
114 }
115
116 return newAction;
117}
Q_GLOBAL_STATIC(KisStoragePluginRegistry, s_instance)
SelectionAction
@ SELECTION_REPLACE
@ SELECTION_INTERSECT
@ SELECTION_SYMMETRICDIFFERENCE
@ SELECTION_DEFAULT
@ SELECTION_SUBTRACT
@ SELECTION_ADD
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
static KisConfigNotifier * instance()
static KisSelectionModifierMapper * instance()
SelectionAction map(Qt::KeyboardModifiers m)
const QScopedPointer< Private > m_d
Qt::KeyboardModifiers symmetricdifferenceModifiers