mirror of
https://github.com/glfw/glfw.git
synced 2026-06-22 06:16:27 +00:00
Cocoa: Fix some key events not being emitted
The key combinations Cmd+Period, Ctrl+Tab and Ctrl+Esc are not passed to the first responder as key events. This commit catches and claims these specific key events via the key equivalents mechanism and emits them from there instead. Closes #1362 Fixes #2278
This commit is contained in:
@@ -6,6 +6,7 @@ excludes other invaluable contributions like language bindings and text and
|
|||||||
video tutorials.
|
video tutorials.
|
||||||
|
|
||||||
- Bobyshev Alexander
|
- Bobyshev Alexander
|
||||||
|
- Alzathar
|
||||||
- Laurent Aphecetche
|
- Laurent Aphecetche
|
||||||
- Matt Arsenault
|
- Matt Arsenault
|
||||||
- Takuro Ashie
|
- Takuro Ashie
|
||||||
@@ -235,6 +236,7 @@ video tutorials.
|
|||||||
- Ed Ropple
|
- Ed Ropple
|
||||||
- Aleksey Rybalkin
|
- Aleksey Rybalkin
|
||||||
- Mikko Rytkönen
|
- Mikko Rytkönen
|
||||||
|
- saikyun
|
||||||
- Riku Salminen
|
- Riku Salminen
|
||||||
- Yoshinori Sano
|
- Yoshinori Sano
|
||||||
- Brandon Schaefer
|
- Brandon Schaefer
|
||||||
|
|||||||
@@ -129,6 +129,8 @@ information on what to include when reporting a bug.
|
|||||||
- [Win32] Removed support for Windows XP and Vista (#2505)
|
- [Win32] Removed support for Windows XP and Vista (#2505)
|
||||||
- [Cocoa] Added `QuartzCore` framework as link-time dependency
|
- [Cocoa] Added `QuartzCore` framework as link-time dependency
|
||||||
- [Cocoa] Removed support for OS X 10.10 Yosemite and earlier (#2506)
|
- [Cocoa] Removed support for OS X 10.10 Yosemite and earlier (#2506)
|
||||||
|
- [Cocoa] Bugfix: Cmd+Period, Ctrl+Tab and Ctrl+Esc key events were not emitted
|
||||||
|
(#1362,#2278)
|
||||||
- [Wayland] Bugfix: The fractional scaling related objects were not destroyed
|
- [Wayland] Bugfix: The fractional scaling related objects were not destroyed
|
||||||
- [Wayland] Bugfix: `glfwInit` would segfault on compositor with no seat (#2517)
|
- [Wayland] Bugfix: `glfwInit` would segfault on compositor with no seat (#2517)
|
||||||
- [Wayland] Bugfix: A drag entering a non-GLFW surface could cause a segfault
|
- [Wayland] Bugfix: A drag entering a non-GLFW surface could cause a segfault
|
||||||
|
|||||||
@@ -599,6 +599,34 @@ static const NSRange kEmptyRange = { NSNotFound, 0 };
|
|||||||
_glfwInputKey(window, key, [event keyCode], GLFW_RELEASE, mods);
|
_glfwInputKey(window, key, [event keyCode], GLFW_RELEASE, mods);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (BOOL)performKeyEquivalent:(NSEvent *)event
|
||||||
|
{
|
||||||
|
// HACK: Some key combinations are consumed before reaching keyDown:
|
||||||
|
// so we claim those events and emit them here
|
||||||
|
const int key = translateKey([event keyCode]);
|
||||||
|
const int mods = translateFlags([event modifierFlags]);
|
||||||
|
|
||||||
|
if (mods & GLFW_MOD_CONTROL)
|
||||||
|
{
|
||||||
|
if (key == GLFW_KEY_TAB || key == GLFW_KEY_ESCAPE)
|
||||||
|
{
|
||||||
|
_glfwInputKey(window, key, [event keyCode], GLFW_PRESS, mods);
|
||||||
|
return YES;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mods & GLFW_MOD_SUPER)
|
||||||
|
{
|
||||||
|
if (key == GLFW_KEY_PERIOD)
|
||||||
|
{
|
||||||
|
_glfwInputKey(window, key, [event keyCode], GLFW_PRESS, mods);
|
||||||
|
return YES;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return [super performKeyEquivalent:event];
|
||||||
|
}
|
||||||
|
|
||||||
- (void)scrollWheel:(NSEvent *)event
|
- (void)scrollWheel:(NSEvent *)event
|
||||||
{
|
{
|
||||||
double deltaX = [event scrollingDeltaX];
|
double deltaX = [event scrollingDeltaX];
|
||||||
|
|||||||
Reference in New Issue
Block a user