36 const int maxScore = std::log2((
int) Qt::MaxMouseButton);
38 Q_FOREACH (Qt::MouseButton
button,
m_d->buttons) {
39 buttonScore += maxScore - std::log2((
int)
button);
42 return m_d->modifiers.size() * 0xFFFF + buttonScore * 0xFF +
action()->
priority();
46 const QSet<Qt::MouseButton> &
buttons)
55 const QSet<Qt::MouseButton> &
buttons)
61 if (!modifiersOk ||
buttons.size() <
m_d->buttons.size() - 1) {
66 if (!
m_d->buttons.contains(
button))
return false;
78 Qt::MouseButton
button = !
m_d->buttons.isEmpty() ? *
m_d->buttons.begin() : Qt::NoButton;
79 return QMouseEvent(QEvent::MouseButtonRelease, localPos,
button, Qt::NoButton, Qt::NoModifier);
KisAbstractInputAction * action
bool compareKeys(const QSet< Qt::Key > &keys1, const QSet< Qt::Key > &keys2)
int priority() const override
KisStrokeShortcut(KisAbstractInputAction *action, int index)
QSet< Qt::MouseButton > buttons
QMouseEvent fakeEndEvent(const QPointF &localPos) const
bool matchReady(const QSet< Qt::Key > &modifiers, const QSet< Qt::MouseButton > &buttons)
QSet< Qt::Key > modifiers
void setButtons(const QSet< Qt::Key > &modifiers, const QSet< Qt::MouseButton > &buttons)
bool matchBegin(Qt::MouseButton button)
~KisStrokeShortcut() override
QString button(const QWheelEvent &ev)
QString buttons(const T &ev)