aboutsummaryrefslogtreecommitdiffstats
path: root/pugl
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2020-07-05 11:53:19 +0200
committerDavid Robillard <d@drobilla.net>2020-07-05 16:22:16 +0200
commit294c0f7d89b206612634978e3df166ce532a1118 (patch)
tree35e37daf6cb29281ce1f24ff6b06b08e4700be70 /pugl
parenteac255d8dac99bc25140c8c0a81cad5926ebdefd (diff)
downloadpugl-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.m4
-rw-r--r--pugl/detail/x11.c7
-rw-r--r--pugl/pugl.h6
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;
/**