aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2019-07-22 00:04:13 +0200
committerDavid Robillard <d@drobilla.net>2019-07-24 01:02:52 +0200
commitfd7d496d4c5dcd9377ce945989ce05f464dc3afc (patch)
treeb3461c1308ceaad427c036b1867bda98a36eba73
parent9d127e389aa182f5d75395a59b3ba7241575f525 (diff)
Remove view pointer from events
This makes events POD, which is generally nice. The view was originally added to reflect the display and window references in XEvent, but doesn't seem very useful in Pugl applications.
-rw-r--r--pugl/pugl.h10
-rw-r--r--pugl/pugl_osx.m27
-rw-r--r--pugl/pugl_win.c2
-rw-r--r--pugl/pugl_x11.c5
4 files changed, 13 insertions, 31 deletions
diff --git a/pugl/pugl.h b/pugl/pugl.h
index 0953238..84887e7 100644
--- a/pugl/pugl.h
+++ b/pugl/pugl.h
@@ -205,7 +205,6 @@ typedef enum {
*/
typedef struct {
PuglEventType type; /**< Event type. */
- PuglView* view; /**< View that received this event. */
uint32_t flags; /**< Bitwise OR of PuglEventFlag values. */
} PuglEventAny;
@@ -216,7 +215,6 @@ typedef struct {
*/
typedef struct {
PuglEventType type; /**< PUGL_BUTTON_PRESS or PUGL_BUTTON_RELEASE. */
- PuglView* view; /**< View that received this event. */
uint32_t flags; /**< Bitwise OR of PuglEventFlag values. */
double time; /**< Time in seconds. */
double x; /**< View-relative X coordinate. */
@@ -232,7 +230,6 @@ typedef struct {
*/
typedef struct {
PuglEventType type; /**< PUGL_CONFIGURE. */
- PuglView* view; /**< View that received this event. */
uint32_t flags; /**< Bitwise OR of PuglEventFlag values. */
double x; /**< New parent-relative X coordinate. */
double y; /**< New parent-relative Y coordinate. */
@@ -245,7 +242,6 @@ typedef struct {
*/
typedef struct {
PuglEventType type; /**< PUGL_EXPOSE. */
- PuglView* view; /**< View that received this event. */
uint32_t flags; /**< Bitwise OR of PuglEventFlag values. */
double x; /**< View-relative X coordinate. */
double y; /**< View-relative Y coordinate. */
@@ -259,7 +255,6 @@ typedef struct {
*/
typedef struct {
PuglEventType type; /**< PUGL_CLOSE. */
- PuglView* view; /**< View that received this event. */
uint32_t flags; /**< Bitwise OR of PuglEventFlag values. */
} PuglEventClose;
@@ -286,7 +281,6 @@ typedef struct {
*/
typedef struct {
PuglEventType type; /**< PUGL_KEY_PRESS or PUGL_KEY_RELEASE. */
- PuglView* view; /**< View that received this event. */
uint32_t flags; /**< Bitwise OR of PuglEventFlag values. */
double time; /**< Time in seconds. */
double x; /**< View-relative X coordinate. */
@@ -306,7 +300,6 @@ typedef struct {
*/
typedef struct {
PuglEventType type; /**< PUGL_ENTER_NOTIFY or PUGL_LEAVE_NOTIFY. */
- PuglView* view; /**< View that received this event. */
uint32_t flags; /**< Bitwise OR of PuglEventFlag values. */
double time; /**< Time in seconds. */
double x; /**< View-relative X coordinate. */
@@ -322,7 +315,6 @@ typedef struct {
*/
typedef struct {
PuglEventType type; /**< PUGL_MOTION_NOTIFY. */
- PuglView* view; /**< View that received this event. */
uint32_t flags; /**< Bitwise OR of PuglEventFlag values. */
double time; /**< Time in seconds. */
double x; /**< View-relative X coordinate. */
@@ -345,7 +337,6 @@ typedef struct {
*/
typedef struct {
PuglEventType type; /**< PUGL_SCROLL. */
- PuglView* view; /**< View that received this event. */
uint32_t flags; /**< Bitwise OR of PuglEventFlag values. */
double time; /**< Time in seconds. */
double x; /**< View-relative X coordinate. */
@@ -362,7 +353,6 @@ typedef struct {
*/
typedef struct {
PuglEventType type; /**< PUGL_FOCUS_IN or PUGL_FOCUS_OUT. */
- PuglView* view; /**< View that received this event. */
uint32_t flags; /**< Bitwise OR of PuglEventFlag values. */
bool grab; /**< True iff this is a grab/ungrab event. */
} PuglEventFocus;
diff --git a/pugl/pugl_osx.m b/pugl/pugl_osx.m
index 45d0fb1..cdaa131 100644
--- a/pugl/pugl_osx.m
+++ b/pugl/pugl_osx.m
@@ -154,7 +154,6 @@ struct PuglInternalsImpl {
const NSRect bounds = [self bounds];
const PuglEventConfigure ev = {
PUGL_CONFIGURE,
- puglview,
0,
bounds.origin.x,
bounds.origin.y,
@@ -181,7 +180,6 @@ struct PuglInternalsImpl {
{
const PuglEventExpose ev = {
PUGL_EXPOSE,
- puglview,
0,
rect.origin.x,
rect.origin.y,
@@ -284,7 +282,6 @@ handleCrossing(PuglOpenGLView* view, NSEvent* event, const PuglEventType type)
const NSPoint rloc = [NSEvent mouseLocation];
const PuglEventCrossing ev = {
type,
- view->puglview,
0,
[event timestamp],
wloc.x,
@@ -313,7 +310,6 @@ handleCrossing(PuglOpenGLView* view, NSEvent* event, const PuglEventType type)
const NSPoint rloc = [NSEvent mouseLocation];
const PuglEventMotion ev = {
PUGL_MOTION_NOTIFY,
- puglview,
0,
[event timestamp],
wloc.x,
@@ -348,7 +344,6 @@ handleCrossing(PuglOpenGLView* view, NSEvent* event, const PuglEventType type)
const NSPoint rloc = [NSEvent mouseLocation];
const PuglEventButton ev = {
PUGL_BUTTON_PRESS,
- puglview,
0,
[event timestamp],
wloc.x,
@@ -367,7 +362,6 @@ handleCrossing(PuglOpenGLView* view, NSEvent* event, const PuglEventType type)
const NSPoint rloc = [NSEvent mouseLocation];
const PuglEventButton ev = {
PUGL_BUTTON_RELEASE,
- puglview,
0,
[event timestamp],
wloc.x,
@@ -406,7 +400,6 @@ handleCrossing(PuglOpenGLView* view, NSEvent* event, const PuglEventType type)
const NSPoint rloc = [NSEvent mouseLocation];
const PuglEventScroll ev = {
PUGL_SCROLL,
- puglview,
0,
[event timestamp],
wloc.x,
@@ -433,7 +426,6 @@ handleCrossing(PuglOpenGLView* view, NSEvent* event, const PuglEventType type)
const uint32_t code = puglDecodeUTF8((const uint8_t*)str);
PuglEventKey ev = {
PUGL_KEY_PRESS,
- puglview,
0,
[event timestamp],
wloc.x,
@@ -459,7 +451,6 @@ handleCrossing(PuglOpenGLView* view, NSEvent* event, const PuglEventType type)
const char* str = [chars UTF8String];
PuglEventKey ev = {
PUGL_KEY_RELEASE,
- puglview,
0,
[event timestamp],
wloc.x,
@@ -502,7 +493,6 @@ handleCrossing(PuglOpenGLView* view, NSEvent* event, const PuglEventType type)
const NSPoint rloc = [NSEvent mouseLocation];
PuglEventKey ev = {
type,
- puglview,
0,
[event timestamp],
wloc.x,
@@ -581,8 +571,9 @@ handleCrossing(PuglOpenGLView* view, NSEvent* event, const PuglEventType type)
- (BOOL) windowShouldClose:(id)sender
{
- const PuglEventClose ev = { PUGL_CLOSE, window->puglview, 0 };
- puglDispatchEvent(window->puglview, (const PuglEvent*)&ev);
+ PuglEvent ev = { 0 };
+ ev.type = PUGL_CLOSE;
+ puglDispatchEvent(window->puglview, &ev);
return YES;
}
@@ -594,14 +585,18 @@ handleCrossing(PuglOpenGLView* view, NSEvent* event, const PuglEventType type)
glview->urgentTimer = NULL;
}
- const PuglEventFocus ev = { PUGL_FOCUS_IN, window->puglview, 0, false };
- puglDispatchEvent(window->puglview, (const PuglEvent*)&ev);
+ PuglEvent ev = { 0 };
+ ev.type = PUGL_FOCUS_IN;
+ ev.focus.grab = false;
+ puglDispatchEvent(window->puglview, &ev);
}
- (void) windowDidResignKey:(NSNotification*)notification
{
- const PuglEventFocus ev = { PUGL_FOCUS_OUT, window->puglview, 0, false };
- puglDispatchEvent(window->puglview, (const PuglEvent*)&ev);
+ PuglEvent ev = { 0 };
+ ev.type = PUGL_FOCUS_OUT;
+ ev.focus.grab = false;
+ puglDispatchEvent(window->puglview, &ev);
}
@end
diff --git a/pugl/pugl_win.c b/pugl/pugl_win.c
index e9fecac..9d5b124 100644
--- a/pugl/pugl_win.c
+++ b/pugl/pugl_win.c
@@ -636,7 +636,6 @@ handleCrossing(PuglView* view, const PuglEventType type, POINT pos)
const PuglEventCrossing ev = {
type,
- view,
0,
GetMessageTime() / 1e3,
(double)pos.x,
@@ -670,7 +669,6 @@ handleMessage(PuglView* view, UINT message, WPARAM wParam, LPARAM lParam)
memset(&event, 0, sizeof(event));
event.any.type = PUGL_NOTHING;
- event.any.view = view;
if (InSendMessageEx(dummy_ptr)) {
event.any.flags |= PUGL_IS_SEND_EVENT;
}
diff --git a/pugl/pugl_x11.c b/pugl/pugl_x11.c
index 3bd94df..59fb29c 100644
--- a/pugl/pugl_x11.c
+++ b/pugl/pugl_x11.c
@@ -296,9 +296,8 @@ translateModifiers(const unsigned xstate)
static PuglEvent
translateEvent(PuglView* view, XEvent xevent)
{
- PuglEvent event = {0};
- event.any.view = view;
- event.any.flags |= xevent.xany.send_event ? PUGL_IS_SEND_EVENT : 0;
+ PuglEvent event = {0};
+ event.any.flags = xevent.xany.send_event ? PUGL_IS_SEND_EVENT : 0;
switch (xevent.type) {
case ClientMessage: