# HG changeset patch # User Olaf Wintermann # Date 1396603757 -7200 # Node ID decc6bf584aa307de70d6c7dd86dbbe2049be0b4 # Parent bcf880b29bc363fd82842268dd7b78fd7113b805 textarea automatically sets selection group (Cocoa) diff -r bcf880b29bc3 -r decc6bf584aa ui/cocoa/menu.m --- a/ui/cocoa/menu.m Thu Apr 03 14:16:41 2014 +0200 +++ b/ui/cocoa/menu.m Fri Apr 04 11:29:17 2014 +0200 @@ -105,7 +105,6 @@ } } } - free(groups); for(int j=0;j { - UiText* value; + UiContext *context; + UiText *value; + int last_length; } -- (TextChangeMgr*)initWithValue:(UiText*)text; +- (TextChangeMgr*)initWithValue:(UiText*)text context:(UiContext*)ctx; - (NSUndoManager*)undoManagerForTextView:(NSTextView*)textview; 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]; diff -r bcf880b29bc3 -r decc6bf584aa ui/cocoa/toolbar.m --- a/ui/cocoa/toolbar.m Thu Apr 03 14:16:41 2014 +0200 +++ b/ui/cocoa/toolbar.m Fri Apr 04 11:29:17 2014 +0200 @@ -139,6 +139,9 @@ [i addObject: NSToolbarFlexibleSpaceItemIdentifier]; [i addObject: NSToolbarSpaceItemIdentifier]; [i addObject: NSToolbarSeparatorItemIdentifier]; + for(id item in allowedItems) { + [i addObject: item]; + } return i; } @@ -147,7 +150,7 @@ return defaultItems; } -- (NSToolbarItem *) toolbar:(NSToolbar*)toolbar +- (NSToolbarItem *) toolbar:(NSToolbar*)toolbar itemForItemIdentifier:(NSString*)identifier willBeInsertedIntoToolbar:(BOOL)flag { diff -r bcf880b29bc3 -r decc6bf584aa ui/cocoa/toolkit.m --- a/ui/cocoa/toolkit.m Thu Apr 03 14:16:41 2014 +0200 +++ b/ui/cocoa/toolkit.m Fri Apr 04 11:29:17 2014 +0200 @@ -69,7 +69,7 @@ } void ui_set_enabled(UIWIDGET widget, int enabled) { - [widget setEnabled:enabled]; + //[widget setEnabled:enabled]; } void ui_main() { diff -r bcf880b29bc3 -r decc6bf584aa ui/cocoa/window.m --- a/ui/cocoa/window.m Thu Apr 03 14:16:41 2014 +0200 +++ b/ui/cocoa/window.m Fri Apr 04 11:29:17 2014 +0200 @@ -143,6 +143,7 @@ [item checkGroups: groups count:ngroups]; } } + free(groups); } @end