Skip to content

Commit f00a204

Browse files
committed
MNT: Cleanup the logic in macosx keypress handling
This removes half of the else-if blocks and combines the keypress/keyrelease for each key into a single statement with negation for whether it was a press or release being handled.
1 parent 97c99c2 commit f00a204

File tree

1 file changed

+31
-53
lines changed

1 file changed

+31
-53
lines changed

src/_macosx.m

Lines changed: 31 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1727,73 +1727,51 @@ - (BOOL)acceptsFirstResponder
17271727
// so we need to handle both cases here
17281728
- (void)flagsChanged:(NSEvent *)event
17291729
{
1730-
bool keypress = false;
1731-
bool keyrelease = false;
1732-
if (([event modifierFlags] & NSEventModifierFlagCommand) && !lastCommand) {
1733-
// Command pressed
1734-
lastCommand = true;
1730+
bool isPress = false; // true if key is pressed, false is released
1731+
if ((([event modifierFlags] & NSEventModifierFlagCommand) && !lastCommand) ||
1732+
(!([event modifierFlags] & NSEventModifierFlagCommand) && lastCommand)) {
1733+
// Command pressed/released
1734+
lastCommand = !lastCommand;
17351735
keyChangeCommand = true;
1736-
keypress = true;
1736+
isPress = lastCommand;
17371737
}
1738-
else if (!([event modifierFlags] & NSEventModifierFlagCommand) && lastCommand) {
1739-
// Command released
1740-
lastCommand = false;
1741-
keyChangeCommand = true;
1742-
keyrelease = true;
1743-
}
1744-
else if (([event modifierFlags] & NSEventModifierFlagControl) && !lastControl) {
1745-
// Control pressed
1746-
lastControl = true;
1738+
else if ((([event modifierFlags] & NSEventModifierFlagControl) && !lastControl) ||
1739+
(!([event modifierFlags] & NSEventModifierFlagControl) && lastControl)) {
1740+
// Control pressed/released
1741+
lastControl = !lastControl;
17471742
keyChangeControl = true;
1748-
keypress = true;
1749-
}
1750-
else if (!([event modifierFlags] & NSEventModifierFlagControl) && lastControl) {
1751-
// Control released
1752-
lastControl = false;
1753-
keyChangeControl = true;
1754-
keyrelease = true;
1755-
}
1756-
else if (([event modifierFlags] & NSEventModifierFlagShift) && !lastShift) {
1757-
// Shift pressed
1758-
lastShift = true;
1759-
keyChangeShift = true;
1760-
keypress = true;
1743+
isPress = lastControl;
17611744
}
1762-
else if (!([event modifierFlags] & NSEventModifierFlagShift) && lastShift) {
1763-
// Shift released
1764-
lastShift = false;
1745+
else if ((([event modifierFlags] & NSEventModifierFlagShift) && !lastShift) ||
1746+
(!([event modifierFlags] & NSEventModifierFlagShift) && lastShift)) {
1747+
// Shift pressed/released
1748+
lastShift = !lastShift;
17651749
keyChangeShift = true;
1766-
keyrelease = true;
1767-
}
1768-
else if (([event modifierFlags] & NSEventModifierFlagOption) && !lastOption) {
1769-
// Option pressed
1770-
lastOption = true;
1771-
keyChangeOption = true;
1772-
keypress = true;
1750+
isPress = lastShift;
17731751
}
1774-
else if (!([event modifierFlags] & NSEventModifierFlagOption) && lastOption) {
1775-
// Option released
1776-
lastOption = false;
1752+
else if ((([event modifierFlags] & NSEventModifierFlagOption) && !lastOption) ||
1753+
(!([event modifierFlags] & NSEventModifierFlagOption) && lastOption)) {
1754+
// Option pressed/released
1755+
lastOption = !lastOption;
17771756
keyChangeOption = true;
1778-
keyrelease = true;
1757+
isPress = lastOption;
17791758
}
1780-
else if (([event modifierFlags] & NSEventModifierFlagCapsLock) && !lastCapsLock) {
1781-
// Capslock pressed
1782-
lastCapsLock = true;
1759+
else if ((([event modifierFlags] & NSEventModifierFlagCapsLock) && !lastCapsLock) ||
1760+
(!([event modifierFlags] & NSEventModifierFlagCapsLock) && lastCapsLock)) {
1761+
// Capslock pressed/released
1762+
lastCapsLock = !lastCapsLock;
17831763
keyChangeCapsLock = true;
1784-
keypress = true;
1764+
isPress = lastCapsLock;
17851765
}
1786-
else if (!([event modifierFlags] & NSEventModifierFlagCapsLock) && lastCapsLock) {
1787-
// Capslock released
1788-
lastCapsLock = false;
1789-
keyChangeCapsLock = true;
1790-
keyrelease = true;
1766+
else{
1767+
// flag we don't handle
1768+
return;
17911769
}
17921770

1793-
if (keypress) {
1771+
if (isPress) {
17941772
[self keyDown: event];
17951773
}
1796-
else if (keyrelease) {
1774+
else {
17971775
[self keyUp: event];
17981776
}
17991777

0 commit comments

Comments
 (0)