bool FromEvent::changePressingState(const Params_Base& paramsBase, const FlagStatus& currentFlags, const Vector_ModifierFlag& fromFlags) { bool isDown = false; if (!isTargetEvent(isDown, paramsBase)) return false; if (isDown) { if (currentFlags.isOn(fromFlags)) { isPressing_ = true; return true; } } else { if (isPressing_) { isPressing_ = false; return true; } } return false; }
TEST(FlagStatus, isOn) { { FlagStatus flagStatus; { Vector_ModifierFlag modifierFlags; EXPECT_TRUE(flagStatus.isOn(modifierFlags)); } { Vector_ModifierFlag modifierFlags; modifierFlags.push_back(ModifierFlag(ModifierFlag::ZERO)); EXPECT_TRUE(flagStatus.isOn(modifierFlags)); } { Vector_ModifierFlag modifierFlags; modifierFlags.push_back(ModifierFlag::NONE); EXPECT_TRUE(flagStatus.isOn(modifierFlags)); } { Vector_ModifierFlag modifierFlags; modifierFlags.push_back(ModifierFlag::NONE); modifierFlags.push_back(ModifierFlag::ZERO); EXPECT_TRUE(flagStatus.isOn(modifierFlags)); } } { FlagStatus flagStatus; flagStatus.increase(ModifierFlag::SHIFT_L); { Vector_ModifierFlag modifierFlags; modifierFlags.push_back(ModifierFlag::SHIFT_L); EXPECT_TRUE(flagStatus.isOn(modifierFlags)); } { Vector_ModifierFlag modifierFlags; modifierFlags.push_back(ModifierFlag::SHIFT_L); modifierFlags.push_back(ModifierFlag::NONE); EXPECT_TRUE(flagStatus.isOn(modifierFlags)); } { Vector_ModifierFlag modifierFlags; modifierFlags.push_back(ModifierFlag::SHIFT_R); EXPECT_FALSE(flagStatus.isOn(modifierFlags)); } { Vector_ModifierFlag modifierFlags; modifierFlags.push_back(ModifierFlag::SHIFT_L); modifierFlags.push_back(ModifierFlag::ZERO); EXPECT_TRUE(flagStatus.isOn(modifierFlags)); } } { FlagStatus flagStatus; flagStatus.increase(ModifierFlag::SHIFT_L); flagStatus.increase(ModifierFlag::ZERO); { Vector_ModifierFlag modifierFlags; modifierFlags.push_back(ModifierFlag::SHIFT_L); EXPECT_TRUE(flagStatus.isOn(modifierFlags)); } { Vector_ModifierFlag modifierFlags; modifierFlags.push_back(ModifierFlag::SHIFT_L); modifierFlags.push_back(ModifierFlag::NONE); EXPECT_TRUE(flagStatus.isOn(modifierFlags)); } { Vector_ModifierFlag modifierFlags; modifierFlags.push_back(ModifierFlag::SHIFT_R); EXPECT_FALSE(flagStatus.isOn(modifierFlags)); } { Vector_ModifierFlag modifierFlags; modifierFlags.push_back(ModifierFlag::SHIFT_L); modifierFlags.push_back(ModifierFlag::ZERO); EXPECT_TRUE(flagStatus.isOn(modifierFlags)); } { Vector_ModifierFlag modifierFlags; modifierFlags.push_back(ModifierFlag::SHIFT_L); modifierFlags.push_back(ModifierFlag::ZERO); modifierFlags.push_back(ModifierFlag::NONE); EXPECT_TRUE(flagStatus.isOn(modifierFlags)); } } { FlagStatus flagStatus; flagStatus.increase(ModifierFlag::SHIFT_L); flagStatus.increase(ModifierFlag::CONTROL_R); flagStatus.increase(ModifierFlag::COMMAND_R); { Vector_ModifierFlag modifierFlags; modifierFlags.push_back(ModifierFlag::SHIFT_L); EXPECT_TRUE(flagStatus.isOn(modifierFlags)); } { Vector_ModifierFlag modifierFlags; modifierFlags.push_back(ModifierFlag::SHIFT_L); modifierFlags.push_back(ModifierFlag::NONE); EXPECT_FALSE(flagStatus.isOn(modifierFlags)); } { Vector_ModifierFlag modifierFlags; modifierFlags.push_back(ModifierFlag::SHIFT_R); EXPECT_FALSE(flagStatus.isOn(modifierFlags)); } { Vector_ModifierFlag modifierFlags; modifierFlags.push_back(ModifierFlag::SHIFT_L); modifierFlags.push_back(ModifierFlag::CONTROL_R); modifierFlags.push_back(ModifierFlag::COMMAND_R); modifierFlags.push_back(ModifierFlag::NONE); EXPECT_TRUE(flagStatus.isOn(modifierFlags)); } } }