Mercurial > dwindows
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)]; } /*