1
0
mirror of https://github.com/ocornut/imgui.git synced 2024-12-02 19:27:27 +01:00

Examples: Apple+Metal: Forward events to OS key combinations like CMD+Q can work. (#3554)

This commit is contained in:
Rokas Kupstys 2020-10-28 12:20:10 +02:00 committed by ocornut
parent 6a0e85c561
commit a3f79104df
2 changed files with 14 additions and 16 deletions

View File

@ -77,6 +77,7 @@ Other Changes:
- Backends: Vulkan: Added support for specifying which subpass to reference during VkPipeline creation. (@3579) [@bdero] - Backends: Vulkan: Added support for specifying which subpass to reference during VkPipeline creation. (@3579) [@bdero]
- Backends: OSX: Fix keypad-enter key not working on MacOS. (#3554) [@rokups, @lfnoise] - Backends: OSX: Fix keypad-enter key not working on MacOS. (#3554) [@rokups, @lfnoise]
- Examples: Apple+Metal: Consolidated/simplified to get closer to other examples. (#3543) [@warrenm] - Examples: Apple+Metal: Consolidated/simplified to get closer to other examples. (#3543) [@warrenm]
- Examples: Apple+Metal: Forward events down so OS key combination like Cmd+Q can work. (#3554) [@rokups]
- Docs: Split examples/README.txt into docs/BACKENDS.md and docs/EXAMPLES.md improved them. - Docs: Split examples/README.txt into docs/BACKENDS.md and docs/EXAMPLES.md improved them.
- Docs: Consistently renamed all occurences of "binding" and "back-end" to "backend" in comments and docs. - Docs: Consistently renamed all occurences of "binding" and "back-end" to "backend" in comments and docs.

View File

@ -108,16 +108,13 @@
// If we want to receive key events, we either need to be in the responder chain of the key view, // If we want to receive key events, we either need to be in the responder chain of the key view,
// or else we can install a local monitor. The consequence of this heavy-handed approach is that // or else we can install a local monitor. The consequence of this heavy-handed approach is that
// we receive events for all controls, not just Dear ImGui widgets. If we had native controls in our // we receive events for all controls, not just Dear ImGui widgets. If we had native controls in our
// window, we'd want to be much more careful than just ingesting the complete event stream, though we // window, we'd want to be much more careful than just ingesting the complete event stream.
// do make an effort to be good citizens by passing along events when Dear ImGui doesn't want to capture. // To match the behavior of other backends, we pass every event down to the OS.
NSEventMask eventMask = NSEventMaskKeyDown | NSEventMaskKeyUp | NSEventMaskFlagsChanged | NSEventTypeScrollWheel; NSEventMask eventMask = NSEventMaskKeyDown | NSEventMaskKeyUp | NSEventMaskFlagsChanged | NSEventTypeScrollWheel;
[NSEvent addLocalMonitorForEventsMatchingMask:eventMask handler:^NSEvent * _Nullable(NSEvent *event) [NSEvent addLocalMonitorForEventsMatchingMask:eventMask handler:^NSEvent * _Nullable(NSEvent *event)
{ {
BOOL wantsCapture = ImGui_ImplOSX_HandleEvent(event, self.view); ImGui_ImplOSX_HandleEvent(event, self.view);
if (event.type == NSEventTypeKeyDown && wantsCapture) return event;
return nil;
else
return event;
}]; }];
ImGui_ImplOSX_Init(); ImGui_ImplOSX_Init();