[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [sc-dev] [ ¿commit? ] SCTextView-keyDownA ction call
are you wanting to add this for just SCViews or also for Document?
this would be a change for Document (SCTextView).
Whether SCViews should behave like this is still to be discussed.
OK for Documents I don't really care.
You have to be careful that any change you make does not break
Japanese input >method.
how do I test this?
I prefer the following writing as it does not introduce another flag:
yes this is better.
I'll commit this.
- (void) keyUp: (NSEvent*) event
{
NSString *characters = [event characters];
if(compiledOK){
unsigned int modifiers = [event modifierFlags];
unichar character = 0;
if([characters length] > 0) {
character = [characters characterAtIndex: 0];
}
unsigned int keycode = [event keyCode];
MyDocument * doc = [self delegate];
PyrObject * pobj = [doc getSCObject];
PyrSymbol *method = getsym("keyUp");
if (pobj) {
pthread_mutex_lock (&gLangMutex);
if(NotNil(pobj->slots+2)){
VMGlobals *g = gMainVMGlobals;
g->canCallOS = true;
++g->sp; SetObject(g->sp, pobj);
++g->sp; SetChar(g->sp, character);
++g->sp; SetInt(g->sp, modifiers);
++g->sp; SetInt(g->sp, character);
++g->sp; SetInt(g->sp, keycode);
runInterpreter(g, method, 5);
g->canCallOS = false;
}
pthread_mutex_unlock (&gLangMutex);
}
}
if ([characters isEqual: @"\03"]) {
} else if (([characters isEqual: @"\n"] || [characters isEqual:
@"\r"]) && !([event modifierFlags] & NSAlternateKeyMask)) {
} else {
[super keyUp: event];
}
}
- (void) keyDown: (NSEvent*) event
{
NSString *characters = [event characters];
if(compiledOK){
unsigned int modifiers = [event modifierFlags];
unichar character = 0;
if([characters length] > 0) {
character = [characters characterAtIndex: 0];
}
unsigned int keycode = [event keyCode];
MyDocument * doc = [self delegate];
PyrObject * pobj = [doc getSCObject];
if (pobj) {
pthread_mutex_lock (&gLangMutex);
if (compiledOK) { // must test again inside the lock
PyrSymbol *method = getsym("keyDown");
if(NotNil(pobj->slots+1)){
//pthread_mutex_lock (&gLangMutex);
VMGlobals *g = gMainVMGlobals;
g->canCallOS = true;
++g->sp; SetObject(g->sp, pobj);
++g->sp; SetChar(g->sp, character);
++g->sp; SetInt(g->sp, modifiers);
++g->sp; SetInt(g->sp, character);
++g->sp; SetInt(g->sp, keycode);
runInterpreter(g, method, 5);
g->canCallOS = false;
}
}
pthread_mutex_unlock (&gLangMutex);
}
}
if ([characters isEqual: @"\03"]) {
[[self delegate] executeSelection: self];
} else if (([characters isEqual: @"\n"] || [characters isEqual:
@"\r"]) && !([event modifierFlags] & NSAlternateKeyMask)) {
[self autoIndent: event];
} else {
//call lang
[super keyDown: event];
}
}
_______________________________________________
sc-dev mailing list
sc-dev@xxxxxxxxxxxxxxx
http://www.create.ucsb.edu/mailman/listinfo/sc-dev
--
.