ui/cocoa/text.m

changeset 23
decc6bf584aa
parent 13
2dbc56c2323b
child 26
a137277f9173
--- 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];

mercurial