diff options
author | David Robillard <d@drobilla.net> | 2020-07-05 11:53:19 +0200 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2020-07-05 16:22:16 +0200 |
commit | 294c0f7d89b206612634978e3df166ce532a1118 (patch) | |
tree | 35e37daf6cb29281ce1f24ff6b06b08e4700be70 /pugl | |
parent | eac255d8dac99bc25140c8c0a81cad5926ebdefd (diff) | |
download | pugl-294c0f7d89b206612634978e3df166ce532a1118.tar.gz pugl-294c0f7d89b206612634978e3df166ce532a1118.tar.bz2 pugl-294c0f7d89b206612634978e3df166ce532a1118.zip |
Replace grab flag in PuglEventFocus with crossing mode
Diffstat (limited to 'pugl')
-rw-r--r-- | pugl/detail/mac.m | 4 | ||||
-rw-r--r-- | pugl/detail/x11.c | 7 | ||||
-rw-r--r-- | pugl/pugl.h | 6 |
3 files changed, 11 insertions, 6 deletions
diff --git a/pugl/detail/mac.m b/pugl/detail/mac.m index 1139bc8..3e5a018 100644 --- a/pugl/detail/mac.m +++ b/pugl/detail/mac.m @@ -778,7 +778,7 @@ handleCrossing(PuglWrapperView* view, NSEvent* event, const PuglEventType type) (void)notification; PuglEvent ev = {{PUGL_FOCUS_IN, 0}}; - ev.focus.grab = false; + ev.focus.mode = PUGL_CROSSING_NORMAL; puglDispatchEvent(window->puglview, &ev); } @@ -787,7 +787,7 @@ handleCrossing(PuglWrapperView* view, NSEvent* event, const PuglEventType type) (void)notification; PuglEvent ev = {{PUGL_FOCUS_OUT, 0}}; - ev.focus.grab = false; + ev.focus.mode = PUGL_CROSSING_NORMAL; puglDispatchEvent(window->puglview, &ev); } diff --git a/pugl/detail/x11.c b/pugl/detail/x11.c index 12efc43..1cd76f7 100644 --- a/pugl/detail/x11.c +++ b/pugl/detail/x11.c @@ -644,7 +644,12 @@ translateEvent(PuglView* view, XEvent xevent) case FocusIn: case FocusOut: event.type = (xevent.type == FocusIn) ? PUGL_FOCUS_IN : PUGL_FOCUS_OUT; - event.focus.grab = (xevent.xfocus.mode != NotifyNormal); + event.focus.mode = PUGL_CROSSING_NORMAL; + if (xevent.xfocus.mode == NotifyGrab) { + event.focus.mode = PUGL_CROSSING_GRAB; + } else if (xevent.xfocus.mode == NotifyUngrab) { + event.focus.mode = PUGL_CROSSING_UNGRAB; + } break; default: diff --git a/pugl/pugl.h b/pugl/pugl.h index 13d8801..137e6d1 100644 --- a/pugl/pugl.h +++ b/pugl/pugl.h @@ -352,9 +352,9 @@ typedef PuglEventAny PuglEventClose; view with the keyboard focus will receive any key press or release events. */ typedef struct { - PuglEventType type; ///< #PUGL_FOCUS_IN or #PUGL_FOCUS_OUT - PuglEventFlags flags; ///< Bitwise OR of #PuglEventFlag values - bool grab; ///< True iff this is a grab/ungrab event + PuglEventType type; ///< #PUGL_FOCUS_IN or #PUGL_FOCUS_OUT + PuglEventFlags flags; ///< Bitwise OR of #PuglEventFlag values + PuglCrossingMode mode; ///< Reason for focus change } PuglEventFocus; /** |