Finally fix launcher window redrawing on cocoa backend

This commit is contained in:
UnknownShadow200 2019-09-29 15:13:58 +10:00
parent 696b0ab4f0
commit 7c96665b9d

View File

@ -3655,6 +3655,7 @@ static void PrintFrame(const char* fmt, CGRect rect) {
static void Window_RefreshBounds(void) { static void Window_RefreshBounds(void) {
CGRect rect; CGRect rect;
// TODO: this is all wrong
rect = ((CGRect(*)(id, SEL))(void *)objc_msgSend_stret)(winHandle, sel_registerName("frame")); rect = ((CGRect(*)(id, SEL))(void *)objc_msgSend_stret)(winHandle, sel_registerName("frame"));
PrintFrame("W_FRM: %i, %i (%i, %i)", rect); PrintFrame("W_FRM: %i, %i (%i, %i)", rect);
@ -3719,7 +3720,7 @@ static Class Window_MakeClass(void) {
return c; return c;
} }
static void View_DrawRect(CGRect r); static void View_DrawRect(id self, SEL cmd, CGRect r);
static void Window_MakeView(void) { static void Window_MakeView(void) {
CGRect rect; CGRect rect;
id view; id view;
@ -3729,7 +3730,8 @@ static void Window_MakeView(void) {
rect = ((CGRect(*)(id, SEL))(void *)objc_msgSend_stret)(view, sel_registerName("frame")); rect = ((CGRect(*)(id, SEL))(void *)objc_msgSend_stret)(view, sel_registerName("frame"));
c = objc_allocateClassPair(objc_getClass("NSView"), "ClassiCube_View", 0); c = objc_allocateClassPair(objc_getClass("NSView"), "ClassiCube_View", 0);
class_addMethod(c, sel_registerName("drawRect:"), View_DrawRect, "v@:@{NSRect={NSPoint=ff}{NSSize=ff}}"); // TODO: 64 bit all the way. need to use d instead of f.
class_addMethod(c, sel_registerName("drawRect:"), View_DrawRect, "v@:{NSRect={NSPoint=ff}{NSSize=ff}}");
objc_registerClassPair(c); objc_registerClassPair(c);
viewHandle = objc_msgSend(c, sel_registerName("alloc")); viewHandle = objc_msgSend(c, sel_registerName("alloc"));
@ -3942,7 +3944,7 @@ void Window_AllocFramebuffer(Bitmap* bmp) {
fb_bmp = *bmp; fb_bmp = *bmp;
} }
static void View_DrawRect(CGRect r_) { static void View_DrawRect(id self, SEL cmd, CGRect r_) {
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef context = NULL; CGContextRef context = NULL;
CGDataProviderRef provider; CGDataProviderRef provider;
@ -3982,7 +3984,7 @@ static void View_DrawRect(CGRect r_) {
void Window_DrawFramebuffer(Rect2D r) { void Window_DrawFramebuffer(Rect2D r) {
CGRect rect; CGRect rect;
rect.origin.x = r.X; rect.origin.x = r.X;
rect.origin.y = r.Y; rect.origin.y = Window_Height - r.Y - r.Height;
rect.size.width = r.Width; rect.size.width = r.Width;
rect.size.height = r.Height; rect.size.height = r.Height;