Removed the event point translation from bleh_darwin.m and rewrote it in Objective-C in area_darwin.m.

This commit is contained in:
Pietro Gagliardi 2014-05-15 21:45:42 -04:00
parent 82101036b8
commit 31fc77a99d
3 changed files with 11 additions and 23 deletions

View File

@ -10,6 +10,7 @@
#define to(T, x) ((T *) (x))
#define toNSEvent(x) to(NSEvent, (x))
#define toAreaView(x) to(areaView, (x))
#define toNSInteger(x) ((NSInteger) (x))
#define fromNSInteger(x) ((intptr_t) (x))
@ -110,7 +111,16 @@ uintptr_t modifierFlags(id e)
return fromNSUInteger([toNSEvent(e) modifierFlags]);
}
// TODO move getTranslatedEventPoint() here
struct xpoint getTranslatedEventPoint(id area, id e)
{
NSPoint p;
struct xpoint q;
p = [toAreaView(area) convertPoint:[toNSEvent(e) locationInWindow] fromView:nil];
q.x = (intptr_t) p.x;
q.y = (intptr_t) p.y;
return q;
}
intptr_t buttonNumber(id e)
{

View File

@ -151,24 +151,3 @@ void drawImage(void *pixels, int64_t width, int64_t height, int64_t stride, int6
nil); /* hints: */
objc_msgSend(bitmap, s_release);
}
/*
more NSPoint fumbling
*/
static NSPoint (*objc_msgSend_stret_point)(id, SEL, ...) =
(NSPoint (*)(id, SEL, ...)) objc_msgSend;
struct xpoint getTranslatedEventPoint(id self, id event)
{
NSPoint p;
struct xpoint ret;
p = objc_msgSend_stret_point(event, s_locationInWindow);
p = objc_msgSend_stret_point(self, s_convertPointFromView,
p, /* convertPoint: */
nil); /* fromView: */
ret.x = (int64_t) p.x;
ret.y = (int64_t) p.y;
return ret;
}

View File

@ -57,7 +57,6 @@ extern id makeDummyEvent();
/* TODO apparently ISO C forbids casting a function pointer to a non-function pointer; this will need to change???? */
extern void *_areaView_drawRect;
extern void drawImage(void *, int64_t, int64_t, int64_t, int64_t, int64_t);
extern struct xpoint getTranslatedEventPoint(id, id);
/* for objc_darwin.go */
extern char *encodedNSRect;