Fixed Mac OS X sysData.setWindowSize() to get the window origin. Now to fix the rest of the errors...
This commit is contained in:
parent
0770c2a697
commit
00243442d2
|
@ -29,6 +29,20 @@ These are the objc_msgSend() wrappers around NSRect. The problem is that while o
|
||||||
I use int64_t for maximum safety, as my coordinates are stored as Go ints and Go int -> C int (which is what is documented as happening) isn't reliable.
|
I use int64_t for maximum safety, as my coordinates are stored as Go ints and Go int -> C int (which is what is documented as happening) isn't reliable.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
struct xrect objc_msgSend_stret_rect_noargs(id obj, SEL sel)
|
||||||
|
{
|
||||||
|
NSRect s;
|
||||||
|
struct xrect t;
|
||||||
|
|
||||||
|
objc_msgSend_stret(&s, obj, sel);
|
||||||
|
t.x = (int64_t) s.origin.x;
|
||||||
|
t.y = (int64_t) s.origin.y;
|
||||||
|
t.width = (int64_t) s.size.width;
|
||||||
|
t.height = (int64_t) s.size.height;
|
||||||
|
return t;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#define OurRect() (NSMakeRect((CGFloat) x, (CGFloat) y, (CGFloat) w, (CGFloat) h))
|
#define OurRect() (NSMakeRect((CGFloat) x, (CGFloat) y, (CGFloat) w, (CGFloat) h))
|
||||||
|
|
||||||
id _objc_msgSend_rect(id obj, SEL sel, int64_t x, int64_t y, int64_t w, int64_t h)
|
id _objc_msgSend_rect(id obj, SEL sel, int64_t x, int64_t y, int64_t w, int64_t h)
|
||||||
|
|
|
@ -21,6 +21,15 @@ inline id objc_msgSend_noargs(id obj, SEL sel)
|
||||||
return objc_msgSend(obj, sel);
|
return objc_msgSend(obj, sel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct xrect {
|
||||||
|
int64_t x;
|
||||||
|
int64_t y;
|
||||||
|
int64_t width;
|
||||||
|
int64_t height;
|
||||||
|
};
|
||||||
|
|
||||||
|
extern struct xrect objc_msgSend_stret_rect_noargs(id obj, SEL sel);
|
||||||
|
|
||||||
struct xsize {
|
struct xsize {
|
||||||
int64_t width;
|
int64_t width;
|
||||||
int64_t height;
|
int64_t height;
|
||||||
|
|
|
@ -38,6 +38,7 @@ var (
|
||||||
_title = sel_getUid("title")
|
_title = sel_getUid("title")
|
||||||
_stringValue = sel_getUid("stringValue")
|
_stringValue = sel_getUid("stringValue")
|
||||||
// TODO others
|
// TODO others
|
||||||
|
_frame = sel_getUid("_frame")
|
||||||
_setFrameDisplay = sel_getUid("setFrame:display:")
|
_setFrameDisplay = sel_getUid("setFrame:display:")
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -219,8 +220,9 @@ func (s *sysData) setWindowSize(width int, height int) error {
|
||||||
defer close(ret)
|
defer close(ret)
|
||||||
uitask <- func() {
|
uitask <- func() {
|
||||||
// we need to get the top left point
|
// we need to get the top left point
|
||||||
|
r := C.objc_msgSend_stret_rect_noargs(s.id, _frame)
|
||||||
objc_msgSend_rect_bool(s.id, _setFrameDisplay,
|
objc_msgSend_rect_bool(s.id, _setFrameDisplay,
|
||||||
x, y, width, height,
|
int(r.x), int(r.y), width, height,
|
||||||
C.BOOL(C.YES)) // TODO set to NO to prevent subviews from being redrawn before they are resized?
|
C.BOOL(C.YES)) // TODO set to NO to prevent subviews from being redrawn before they are resized?
|
||||||
ret <- struct{}{}
|
ret <- struct{}{}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue