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: