Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 3ff87cf

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 aaabd04 commit 3ff87cf

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
@@ -1914,73 +1914,51 @@ - (BOOL)acceptsFirstResponder
19141914
// so we need to handle both cases here
19151915
- (void)flagsChanged:(NSEvent *)event
19161916
{
1917-
bool keypress = false;
1918-
bool keyrelease = false;
1919-
if (([event modifierFlags] & NSEventModifierFlagCommand) && !lastCommand) {
1920-
// Command pressed
1921-
lastCommand = true;
1917+
bool isPress = false; // true if key is pressed, false is released
1918+
if ((([event modifierFlags] & NSEventModifierFlagCommand) && !lastCommand) ||
1919+
(!([event modifierFlags] & NSEventModifierFlagCommand) && lastCommand)) {
1920+
// Command pressed/released
1921+
lastCommand = !lastCommand;
19221922
keyChangeCommand = true;
1923-
keypress = true;
1923+
isPress = lastCommand;
19241924
}
1925-
else if (!([event modifierFlags] & NSEventModifierFlagCommand) && lastCommand) {
1926-
// Command released
1927-
lastCommand = false;
1928-
keyChangeCommand = true;
1929-
keyrelease = true;
1930-
}
1931-
else if (([event modifierFlags] & NSEventModifierFlagControl) && !lastControl) {
1932-
// Control pressed
1933-
lastControl = true;
1925+
else if ((([event modifierFlags] & NSEventModifierFlagControl) && !lastControl) ||
1926+
(!([event modifierFlags] & NSEventModifierFlagControl) && lastControl)) {
1927+
// Control pressed/released
1928+
lastControl = !lastControl;
19341929
keyChangeControl = true;
1935-
keypress = true;
1936-
}
1937-
else if (!([event modifierFlags] & NSEventModifierFlagControl) && lastControl) {
1938-
// Control released
1939-
lastControl = false;
1940-
keyChangeControl = true;
1941-
keyrelease = true;
1942-
}
1943-
else if (([event modifierFlags] & NSEventModifierFlagShift) && !lastShift) {
1944-
// Shift pressed
1945-
lastShift = true;
1946-
keyChangeShift = true;
1947-
keypress = true;
1930+
isPress = lastControl;
19481931
}
1949-
else if (!([event modifierFlags] & NSEventModifierFlagShift) && lastShift) {
1950-
// Shift released
1951-
lastShift = false;
1932+
else if ((([event modifierFlags] & NSEventModifierFlagShift) && !lastShift) ||
1933+
(!([event modifierFlags] & NSEventModifierFlagShift) && lastShift)) {
1934+
// Shift pressed/released
1935+
lastShift = !lastShift;
19521936
keyChangeShift = true;
1953-
keyrelease = true;
1954-
}
1955-
else if (([event modifierFlags] & NSEventModifierFlagOption) && !lastOption) {
1956-
// Option pressed
1957-
lastOption = true;
1958-
keyChangeOption = true;
1959-
keypress = true;
1937+
isPress = lastShift;
19601938
}
1961-
else if (!([event modifierFlags] & NSEventModifierFlagOption) && lastOption) {
1962-
// Option released
1963-
lastOption = false;
1939+
else if ((([event modifierFlags] & NSEventModifierFlagOption) && !lastOption) ||
1940+
(!([event modifierFlags] & NSEventModifierFlagOption) && lastOption)) {
1941+
// Option pressed/released
1942+
lastOption = !lastOption;
19641943
keyChangeOption = true;
1965-
keyrelease = true;
1944+
isPress = lastOption;
19661945
}
1967-
else if (([event modifierFlags] & NSEventModifierFlagCapsLock) && !lastCapsLock) {
1968-
// Capslock pressed
1969-
lastCapsLock = true;
1946+
else if ((([event modifierFlags] & NSEventModifierFlagCapsLock) && !lastCapsLock) ||
1947+
(!([event modifierFlags] & NSEventModifierFlagCapsLock) && lastCapsLock)) {
1948+
// Capslock pressed/released
1949+
lastCapsLock = !lastCapsLock;
19701950
keyChangeCapsLock = true;
1971-
keypress = true;
1951+
isPress = lastCapsLock;
19721952
}
1973-
else if (!([event modifierFlags] & NSEventModifierFlagCapsLock) && lastCapsLock) {
1974-
// Capslock released
1975-
lastCapsLock = false;
1976-
keyChangeCapsLock = true;
1977-
keyrelease = true;
1953+
else{
1954+
// flag we don't handle
1955+
return;
19781956
}
19791957

1980-
if (keypress) {
1958+
if (isPress) {
19811959
[self keyDown: event];
19821960
}
1983-
else if (keyrelease) {
1961+
else {
19841962
[self keyUp: event];
19851963
}
19861964

0 commit comments

Comments
 (0)