changeset 992:2d80b4dcff9a

A few MLE fixes on the Mac... and a slightly updated dwtest for MLE testing.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Sat, 07 May 2011 19:39:45 +0000
parents 64c4c40c5835
children 98d73c9e81fc
files dwtest.c mac/dw.m
diffstat 2 files changed, 27 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/dwtest.c	Sat May 07 19:12:58 2011 +0000
+++ b/dwtest.c	Sat May 07 19:39:45 2011 +0000
@@ -1031,10 +1031,11 @@
 	mle_point = dw_mle_import(container_mle, buffer, mle_point);
     sprintf(buffer, "[%d]abczxydefijkl", mle_point);
 	mle_point = dw_mle_import(container_mle, buffer, mle_point);
-    dw_mle_delete(container_mle, 11, 3);
-	mle_point = dw_mle_import(container_mle, "gh", 14);
+    dw_mle_delete(container_mle, 9, 3);
+	mle_point = dw_mle_import(container_mle, "gh", 12);
     dw_mle_get_size(container_mle, (unsigned long*)&mle_point, NULL);
-	mle_point = dw_mle_import(container_mle, "\r\n\r\n", mle_point);
+    sprintf(buffer, "[%d]\r\n\r\n", mle_point);
+	mle_point = dw_mle_import(container_mle, buffer, mle_point);
     dw_mle_set_cursor(container_mle, mle_point);
    /* connect our event trappers... */
     dw_signal_connect(container, DW_SIGNAL_ITEM_ENTER, DW_SIGNAL_FUNC(item_enter_cb), (void *)container_status);
--- a/mac/dw.m	Sat May 07 19:12:58 2011 +0000
+++ b/mac/dw.m	Sat May 07 19:39:45 2011 +0000
@@ -4234,7 +4234,12 @@
     NSTextStorage *ts = [mle textStorage];
     NSString *nstr = [NSString stringWithUTF8String:buffer];
     NSMutableString *ms = [ts mutableString];
-    [ms insertString:nstr atIndex:(startpoint+1)];
+    NSUInteger length = [ms length];
+    if(startpoint < 0)
+        startpoint = 0;
+    if(startpoint > length)
+        startpoint = (int)length;
+    [ms insertString:nstr atIndex:startpoint];
     return (unsigned int)strlen(buffer) + startpoint;
 }
 
@@ -4270,11 +4275,15 @@
     NSMutableString *ms = [ts mutableString];
     NSUInteger numberOfLines, index, stringLength = [ms length];
 
-    for(index=0, numberOfLines=0; index < stringLength; numberOfLines++)
-        index = NSMaxRange([ms lineRangeForRange:NSMakeRange(index, 0)]);
-
-    *bytes = stringLength;
-    *lines = numberOfLines;
+    if(bytes)
+        *bytes = stringLength;
+    if(lines)
+    {
+        for(index=0, numberOfLines=0; index < stringLength; numberOfLines++)
+            index = NSMaxRange([ms lineRangeForRange:NSMakeRange(index, 0)]);
+        
+        *lines = numberOfLines;
+    }
 }
 
 /*
@@ -4290,7 +4299,14 @@
     DWMLE *mle = [sv documentView];
     NSTextStorage *ts = [mle textStorage];
     NSMutableString *ms = [ts mutableString];
-    [ms deleteCharactersInRange:NSMakeRange(startpoint+1, length)];
+    NSUInteger mslength = [ms length];
+    if(startpoint < 0)
+        startpoint = 0;
+    if(startpoint > mslength)
+        startpoint = (int)mslength;
+    if(startpoint + length > mslength)
+        length = (int)mslength - startpoint;
+    [ms deleteCharactersInRange:NSMakeRange(startpoint, length)];
 }
 
 /*