diff -r bcf880b29bc3 -r decc6bf584aa ui/cocoa/text.m --- a/ui/cocoa/text.m Thu Apr 03 14:16:41 2014 +0200 +++ b/ui/cocoa/text.m Fri Apr 04 11:29:17 2014 +0200 @@ -35,8 +35,10 @@ @implementation TextChangeMgr -- (TextChangeMgr*)initWithValue:(UiText*)text { +- (TextChangeMgr*)initWithValue:(UiText*)text context:(UiContext*)ctx { value = text; + context = ctx; + last_length = 0; return self; } @@ -44,6 +46,22 @@ return (NSUndoManager*)value->undomgr; } +- (NSRange)textView:(NSTextView *)textview + willChangeSelectionFromCharacterRange:(NSRange)oldrange + toCharacterRange:(NSRange)newrange +{ + if(newrange.length != last_length) { + if(newrange.length == 0) { + ui_unset_group(context, UI_GROUP_SELECTION); + } else { + ui_set_group(context, UI_GROUP_SELECTION); + } + } + + last_length = newrange.length; + return newrange; +} + @end @@ -76,7 +94,7 @@ value->value = NULL; value->obj = textview; - TextChangeMgr *delegate = [[TextChangeMgr alloc]initWithValue:value]; + TextChangeMgr *delegate = [[TextChangeMgr alloc]initWithValue:value context:obj->ctx]; [textview setDelegate:delegate]; NSUndoManager *undomgr = [[NSUndoManager alloc]init];