# HG changeset patch # User bsmith@81767d24-ef19-dc11-ae90-00e081727c95 # Date 1299940976 0 # Node ID 01107d8e033e3dc195787743922077f051c0e1c0 # Parent 82250177f8145fb9a5b0440d506e5d60bad354ff Fixed the scrollbar maximum range to be correct. Also added some MLE code. diff -r 82250177f814 -r 01107d8e033e mac/dw.m --- a/mac/dw.m Sat Mar 12 06:19:35 2011 +0000 +++ b/mac/dw.m Sat Mar 12 14:42:56 2011 +0000 @@ -254,7 +254,10 @@ NSString *nstr = [item pointerAtIndex:1]; user = [item pointerAtIndex:3]; - text = strdup([nstr UTF8String]); + if(user) + { + text = strdup([nstr UTF8String]); + } int result = treeselectfunc(handler->window, item, text, handler->data, user); free(text); return result; @@ -715,9 +718,10 @@ -(void)scrollerChanged:(id)sender { double proportion = [self knobProportion]; - int result = (int)([self doubleValue] * range); + int page = (int)(proportion * range); + int max = (int)(range - page); + int result = (int)([self doubleValue] * max); int newpos = result; - int page = (int)(proportion * range); switch ([sender hitPart]) { @@ -730,7 +734,7 @@ break; case NSScrollerIncrementLine: - if(newpos < range) + if(newpos < max) { newpos++; } @@ -746,9 +750,9 @@ case NSScrollerIncrementPage: newpos += page; - if(newpos > range) + if(newpos > max) { - newpos = range; + newpos = max; } break; @@ -757,7 +761,7 @@ } if(newpos != result) { - double newposd = (double)newpos/range; + double newposd = (double)newpos/max; [self setDoubleValue:newposd]; } _event_handler(self, (void *)newpos, 14); @@ -3316,6 +3320,9 @@ */ void API dw_mle_set_visible(HWND handle, int line) { + /*NSScrollView *sv = handle; + DWMLE *mle = [sv documentView]; + [mle scrollrangeToVisible:NSMakeRange(0,13)];*/ NSLog(@"dw_mle_set_visible() unimplemented\n"); } @@ -3367,7 +3374,9 @@ */ void API dw_mle_set_cursor(HWND handle, int point) { - NSLog(@"dw_mle_set_cursor() unimplemented\n"); + NSScrollView *sv = handle; + DWMLE *mle = [sv documentView]; + [mle setSelectedRange: NSMakeRange(point,point)]; } /*