changeset 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
files mac/dw.m
diffstat 1 files changed, 17 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- 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)];
 }
 
 /*