6#include <phosphorcompositor_export.h>
8#include <QDBusArgument>
10#include <QVariantList>
35namespace TriggerParser {
43inline bool checkModifier(
int modifierSetting, Qt::KeyboardModifiers mods)
45 const bool shiftHeld = mods.testFlag(Qt::ShiftModifier);
46 const bool ctrlHeld = mods.testFlag(Qt::ControlModifier);
47 const bool altHeld = mods.testFlag(Qt::AltModifier);
48 const bool metaHeld = mods.testFlag(Qt::MetaModifier);
50 switch (modifierSetting) {
62 return ctrlHeld && altHeld;
64 return ctrlHeld && shiftHeld;
66 return altHeld && shiftHeld;
70 return altHeld && metaHeld;
72 return ctrlHeld && altHeld && metaHeld;
86inline bool anyTriggerHeld(
const QVector<ParsedTrigger>& triggers, Qt::KeyboardModifiers mods,
87 Qt::MouseButtons mouseButtons)
89 for (
const auto& t : triggers) {
90 const bool modMatch = (t.modifier == 0) ||
checkModifier(t.modifier, mods);
91 const bool btnMatch = (t.mouseButton == 0) || (
static_cast<int>(mouseButtons) & t.mouseButton) != 0;
92 if (modMatch && btnMatch && (t.modifier != 0 || t.mouseButton != 0))
109PHOSPHORCOMPOSITOR_EXPORT QVector<ParsedTrigger>
110parseTriggers(
const QVariant& triggerVariant,
const QString& modifierFieldName,
const QString& mouseButtonFieldName);
bool checkModifier(int modifierSetting, Qt::KeyboardModifiers mods)
Map DragModifier enum value to Qt modifier flags.
Definition TriggerParser.h:43
PHOSPHORCOMPOSITOR_EXPORT QVector< ParsedTrigger > parseTriggers(const QVariant &triggerVariant, const QString &modifierFieldName, const QString &mouseButtonFieldName)
Parse trigger list from D-Bus QVariantList (handles QDBusArgument wrapping)
bool anyTriggerHeld(const QVector< ParsedTrigger > &triggers, Qt::KeyboardModifiers mods, Qt::MouseButtons mouseButtons)
Check if any parsed trigger is currently held.
Definition TriggerParser.h:86
Definition AutotileState.h:16
Pre-parsed activation trigger (avoids QVariant unboxing in hot path)
Definition TriggerParser.h:24
int mouseButton
Definition TriggerParser.h:26
int modifier
Definition TriggerParser.h:25