changeset 705:7087f3a294e5

Spinbuttons now respond to value changed. Fix for typing in spinbutton a value out of the range. Other related event fixes.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Fri, 11 Mar 2011 20:30:59 +0000
parents 336800e9e648
children 79b38b1f3346
files mac/dw.m
diffstat 1 files changed, 17 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/mac/dw.m	Fri Mar 11 19:59:29 2011 +0000
+++ b/mac/dw.m	Fri Mar 11 20:30:59 2011 +0000
@@ -134,7 +134,7 @@
 int _event_handler(id object, NSEvent *event, int message)
 {
 	SignalHandler *handler = _get_handler(object, message);
-	/*NSLog(@"Event handler - type %d\n", message);*/
+	NSLog(@"Event handler - type %d\n", message);
 	
 	if(handler)
 	{
@@ -670,7 +670,7 @@
 @implementation DWSlider
 -(void *)userdata { return userdata; }
 -(void)setUserdata:(void *)input { userdata = input; }
--(void)sliderChanged:(id)sender { NSLog(@"Slider changed"); _event_handler(self, (void *)[self integerValue], 14); }
+-(void)sliderChanged:(id)sender { _event_handler(self, (void *)[self integerValue], 14); }
 -(void)dealloc { UserData *root = userdata; _remove_userdata(&root, NULL, TRUE); [super dealloc]; }
 @end
 
@@ -686,7 +686,7 @@
 -(float)range;
 -(float)visible;
 -(void)setRange:(float)input1 andVisible:(float)input2;
--(void)changed:(id)sender;
+-(void)scrollerChanged:(id)sender;
 @end
 
 @implementation DWScrollbar
@@ -695,7 +695,7 @@
 -(float)range { return range; }
 -(float)visible { return visible; }
 -(void)setRange:(float)input1 andVisible:(float)input2 { range = input1; visible = input2; }
--(void)changed:(id)sender { NSNumber *num = [NSNumber numberWithDouble:[self floatValue]]; _event_handler(self, (void *)[num integerValue], 14); }
+-(void)scrollerChanged:(id)sender { NSNumber *num = [NSNumber numberWithDouble:[self floatValue]]; _event_handler(self, (void *)[num integerValue], 14); }
 -(void)dealloc { UserData *root = userdata; _remove_userdata(&root, NULL, TRUE); [super dealloc]; }
 @end
 
@@ -1165,9 +1165,12 @@
 @interface DWStepper : NSStepper 
 { 
     id textfield;
+    id parent;
 }
 -(void)setTextfield:(id)input;
 -(id)textfield;
+-(void)setParent:(id)input;
+-(id)parent;
 -(void)mouseDown:(NSEvent *)event;
 -(void)mouseUp:(NSEvent *)event;
 @end
@@ -1175,17 +1178,21 @@
 @implementation DWStepper
 -(void)setTextfield:(id)input { textfield = input; }
 -(id)textfield { return textfield; }
+-(void)setParent:(id)input { parent = input; }
+-(id)parent { return parent; }
 -(void)mouseDown:(NSEvent *)event
 {
     [super mouseDown:event];
     if([[NSApp currentEvent] type] == NSLeftMouseUp) 
     {
-        [textfield takeIntValueFrom:self]; 
+        [textfield takeIntValueFrom:self];
+        _event_handler(parent, (void *)[self integerValue], 14);
     }
 }
 -(void)mouseUp:(NSEvent *)event
 {
     [textfield takeIntValueFrom:self]; 
+    _event_handler(parent, (void *)[self integerValue], 14);
 }
 @end
 
@@ -1215,6 +1222,7 @@
         [self addSubview:textfield];
         stepper = [[DWStepper alloc] init];
         [self addSubview:stepper];
+        [stepper setParent:self];
         [stepper setTextfield:textfield];
         [textfield takeIntValueFrom:stepper];
         [textfield setDelegate:self];
@@ -1228,6 +1236,8 @@
 -(void)controlTextDidChange:(NSNotification *)aNotification
 {
     [stepper takeIntValueFrom:textfield];
+    [textfield takeIntValueFrom:stepper];
+    _event_handler(self, (void *)[stepper integerValue], 14);
 }
 -(void)dealloc { UserData *root = userdata; _remove_userdata(&root, NULL, TRUE); [super dealloc]; }
 @end
@@ -2573,6 +2583,8 @@
     [scrollbar setAction:@selector(changed:)];
     [scrollbar setRange:0.0 andVisible:0.0];
     [scrollbar setKnobProportion:1.0];
+    [scrollbar setTarget:scrollbar];
+    [scrollbar setAction:@selector(scrollerChanged:)];
     [scrollbar setTag:cid];
     [scrollbar setEnabled:YES];
     return scrollbar;