Mercurial > dwindows
comparison mac/dw.m @ 712:01107d8e033e
Fixed the scrollbar maximum range to be correct. Also added some MLE code.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Sat, 12 Mar 2011 14:42:56 +0000 |
parents | 82250177f814 |
children | 2c8fc0fd8c11 |
comparison
equal
deleted
inserted
replaced
711:82250177f814 | 712:01107d8e033e |
---|---|
252 { | 252 { |
253 item = (id)event; | 253 item = (id)event; |
254 NSString *nstr = [item pointerAtIndex:1]; | 254 NSString *nstr = [item pointerAtIndex:1]; |
255 | 255 |
256 user = [item pointerAtIndex:3]; | 256 user = [item pointerAtIndex:3]; |
257 text = strdup([nstr UTF8String]); | 257 if(user) |
258 { | |
259 text = strdup([nstr UTF8String]); | |
260 } | |
258 int result = treeselectfunc(handler->window, item, text, handler->data, user); | 261 int result = treeselectfunc(handler->window, item, text, handler->data, user); |
259 free(text); | 262 free(text); |
260 return result; | 263 return result; |
261 } | 264 } |
262 | 265 |
713 -(float)visible { return visible; } | 716 -(float)visible { return visible; } |
714 -(void)setRange:(float)input1 andVisible:(float)input2 { range = input1; visible = input2; } | 717 -(void)setRange:(float)input1 andVisible:(float)input2 { range = input1; visible = input2; } |
715 -(void)scrollerChanged:(id)sender | 718 -(void)scrollerChanged:(id)sender |
716 { | 719 { |
717 double proportion = [self knobProportion]; | 720 double proportion = [self knobProportion]; |
718 int result = (int)([self doubleValue] * range); | 721 int page = (int)(proportion * range); |
722 int max = (int)(range - page); | |
723 int result = (int)([self doubleValue] * max); | |
719 int newpos = result; | 724 int newpos = result; |
720 int page = (int)(proportion * range); | |
721 | 725 |
722 switch ([sender hitPart]) | 726 switch ([sender hitPart]) |
723 { | 727 { |
724 | 728 |
725 case NSScrollerDecrementLine: | 729 case NSScrollerDecrementLine: |
728 newpos--; | 732 newpos--; |
729 } | 733 } |
730 break; | 734 break; |
731 | 735 |
732 case NSScrollerIncrementLine: | 736 case NSScrollerIncrementLine: |
733 if(newpos < range) | 737 if(newpos < max) |
734 { | 738 { |
735 newpos++; | 739 newpos++; |
736 } | 740 } |
737 break; | 741 break; |
738 | 742 |
744 } | 748 } |
745 break; | 749 break; |
746 | 750 |
747 case NSScrollerIncrementPage: | 751 case NSScrollerIncrementPage: |
748 newpos += page; | 752 newpos += page; |
749 if(newpos > range) | 753 if(newpos > max) |
750 { | 754 { |
751 newpos = range; | 755 newpos = max; |
752 } | 756 } |
753 break; | 757 break; |
754 | 758 |
755 default: | 759 default: |
756 ; // do nothing | 760 ; // do nothing |
757 } | 761 } |
758 if(newpos != result) | 762 if(newpos != result) |
759 { | 763 { |
760 double newposd = (double)newpos/range; | 764 double newposd = (double)newpos/max; |
761 [self setDoubleValue:newposd]; | 765 [self setDoubleValue:newposd]; |
762 } | 766 } |
763 _event_handler(self, (void *)newpos, 14); | 767 _event_handler(self, (void *)newpos, 14); |
764 } | 768 } |
765 -(void)dealloc { UserData *root = userdata; _remove_userdata(&root, NULL, TRUE); [super dealloc]; } | 769 -(void)dealloc { UserData *root = userdata; _remove_userdata(&root, NULL, TRUE); [super dealloc]; } |
3314 * handle: Handle to the MLE to be positioned. | 3318 * handle: Handle to the MLE to be positioned. |
3315 * line: Line to be visible. | 3319 * line: Line to be visible. |
3316 */ | 3320 */ |
3317 void API dw_mle_set_visible(HWND handle, int line) | 3321 void API dw_mle_set_visible(HWND handle, int line) |
3318 { | 3322 { |
3323 /*NSScrollView *sv = handle; | |
3324 DWMLE *mle = [sv documentView]; | |
3325 [mle scrollrangeToVisible:NSMakeRange(0,13)];*/ | |
3319 NSLog(@"dw_mle_set_visible() unimplemented\n"); | 3326 NSLog(@"dw_mle_set_visible() unimplemented\n"); |
3320 } | 3327 } |
3321 | 3328 |
3322 /* | 3329 /* |
3323 * Sets the editablity of an MLE box. | 3330 * Sets the editablity of an MLE box. |
3365 * handle: Handle to the MLE to be positioned. | 3372 * handle: Handle to the MLE to be positioned. |
3366 * point: Point to position cursor. | 3373 * point: Point to position cursor. |
3367 */ | 3374 */ |
3368 void API dw_mle_set_cursor(HWND handle, int point) | 3375 void API dw_mle_set_cursor(HWND handle, int point) |
3369 { | 3376 { |
3370 NSLog(@"dw_mle_set_cursor() unimplemented\n"); | 3377 NSScrollView *sv = handle; |
3378 DWMLE *mle = [sv documentView]; | |
3379 [mle setSelectedRange: NSMakeRange(point,point)]; | |
3371 } | 3380 } |
3372 | 3381 |
3373 /* | 3382 /* |
3374 * Finds text in an MLE box. | 3383 * Finds text in an MLE box. |
3375 * Parameters: | 3384 * Parameters: |