commit - 813b3eea8b469a6d603f13a51a8afb8e3dae3a32
commit + b4d0ac961262aace74431d78fe952a404a6f25a1
blob - 58c53f7d2f313cf18ee57cd1fe3ff33b66a8ecce
blob + bbe481647a388433cb1b693fa10a3fd5c536238f
--- src/cmd/devdraw/cocoa-screen.m
+++ src/cmd/devdraw/cocoa-screen.m
int usegestures = 0;
int useoldfullscreen = 0;
+int usebigarrow = 0;
+extern Cursor bigarrow;
+
+void setcursor0(Cursor *c);
+
void
usage(void)
{
case 'g':
usegestures = 1;
break;
+ case 'b':
+ usebigarrow = 1;
+ break;
default:
usage();
}ARGEND
if(OSX_VERSION < 100700)
[NSAutoreleasePool new];
+
+ // Reset cursor to ensure we start
+ // with bigarrow.
+ if(usebigarrow)
+ setcursor0(nil);
[NSApplication sharedApplication];
[NSApp setActivationPolicy:NSApplicationActivationPolicyRegular];
+ (void)calldrawimg:(id)arg{ drawimg();}
+ (void)callflushwin:(id)arg{ flushwin();}
+ (void)callmakewin:(id)arg{ makewin();}
++ (void)callsetcursor0:(id)arg{ setcursor0([[arg autorelease] pointerValue]);}
- (void)calltogglefs:(id)arg{ togglefs();}
@end
{
NSCursor *c;
+ [super resetCursorRects];
+
qlock(&win.cursorl);
c = win.cursor;
if(c == nil)
c = [NSCursor arrowCursor];
- [self addCursorRect:[self bounds] cursor:c];
+ [self addCursorRect:[self bounds] cursor:c];
qunlock(&win.cursorl);
}
- (BOOL)isFlipped
}
void
-setcursor(Cursor *c)
+setcursor(Cursor *cursor)
{
+ [appdelegate
+ performSelectorOnMainThread:@selector(callsetcursor0:)
+ withObject:[[NSValue valueWithPointer:cursor] retain]
+ waitUntilDone:YES];
+}
+
+void
+setcursor0(Cursor *c)
+{
NSBitmapImageRep *r;
NSImage *i;
NSPoint p;
[win.cursor release];
win.cursor = nil;
}
+
+ if(c == nil && usebigarrow)
+ c = &bigarrow;
+
if(c){
r = [[NSBitmapImageRep alloc]
initWithBitmapDataPlanes:nil
win.cursor = [[NSCursor alloc] initWithImage:i hotSpot:p];
+ [win.cursor set];
[i release];
[r release];
}
+
qunlock(&win.cursorl);
[WIN invalidateCursorRectsForView:win.content];
}
blob - /dev/null
blob + af7e65db52ef79b5ae68033531be4aacda6997e4 (mode 644)
--- /dev/null
+++ src/cmd/devdraw/cursor.c
+#include <u.h>
+#include <libc.h>
+#include <draw.h>
+#include <cursor.h>
+
+Cursor bigarrow = {
+ {0, 0},
+ {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFC,
+ 0xFF, 0xF0, 0xFF, 0xF0, 0xFF, 0xF8, 0xFF, 0xFC,
+ 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFC,
+ 0xF3, 0xF8, 0xF1, 0xF0, 0xE0, 0xE0, 0xC0, 0x40},
+ {0x00, 0x00, 0x7F, 0xFE, 0x7F, 0xFC, 0x7F, 0xF0,
+ 0x7F, 0xE0, 0x7F, 0xE0, 0x7F, 0xF0, 0x7F, 0xF8,
+ 0x7F, 0xFC, 0x7F, 0xFE, 0x7F, 0xFC, 0x73, 0xF8,
+ 0x61, 0xF0, 0x60, 0xE0, 0x40, 0x40, 0x00, 0x00},
+};
blob - dde44c819e98fddfc8509fb12becf2d283fe9599
blob + a9072adfef66f80bf5889312abfebd1d5a787b76
--- src/cmd/devdraw/mkwsysrules.sh
+++ src/cmd/devdraw/mkwsysrules.sh
echo 'WSYSOFILES=$WSYSOFILES osx-screen-carbon-objc.o osx-draw.o osx-srv.o'
echo 'MACARGV=macargv.o'
elif [ $WSYSTYPE = osx-cocoa ]; then
- echo 'WSYSOFILES=$WSYSOFILES osx-draw.o cocoa-screen-objc.o cocoa-srv.o cocoa-thread.o'
+ echo 'WSYSOFILES=$WSYSOFILES osx-draw.o cocoa-screen-objc.o cocoa-srv.o cocoa-thread.o cursor.o'
echo 'MACARGV=macargv-objc.o'
elif [ $WSYSTYPE = nowsys ]; then
echo 'WSYSOFILES=nowsys.o'