comparison mac/dw.m @ 851:5b663261b76c

Added code to prevent configure events from being sent with the same size.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Thu, 31 Mar 2011 17:22:42 +0000
parents 1a7c8d210b18
children bb582f89007a
comparison
equal deleted inserted replaced
850:1a7c8d210b18 851:5b663261b76c
983 /* Subclass for a render area type */ 983 /* Subclass for a render area type */
984 @interface DWRender : NSControl 984 @interface DWRender : NSControl
985 { 985 {
986 void *userdata; 986 void *userdata;
987 NSFont *font; 987 NSFont *font;
988 NSSize size;
988 } 989 }
989 -(void *)userdata; 990 -(void *)userdata;
990 -(void)setUserdata:(void *)input; 991 -(void)setUserdata:(void *)input;
991 -(void)setFont:(NSFont *)input; 992 -(void)setFont:(NSFont *)input;
992 -(NSFont *)font; 993 -(NSFont *)font;
994 -(void)setSize:(NSSize)input;
995 -(NSSize)size;
993 -(void)mouseDown:(NSEvent *)theEvent; 996 -(void)mouseDown:(NSEvent *)theEvent;
994 -(void)mouseUp:(NSEvent *)theEvent; 997 -(void)mouseUp:(NSEvent *)theEvent;
995 -(NSMenu *)menuForEvent:(NSEvent *)theEvent; 998 -(NSMenu *)menuForEvent:(NSEvent *)theEvent;
996 -(void)rightMouseUp:(NSEvent *)theEvent; 999 -(void)rightMouseUp:(NSEvent *)theEvent;
997 -(void)otherMouseDown:(NSEvent *)theEvent; 1000 -(void)otherMouseDown:(NSEvent *)theEvent;
1004 @implementation DWRender 1007 @implementation DWRender
1005 -(void *)userdata { return userdata; } 1008 -(void *)userdata { return userdata; }
1006 -(void)setUserdata:(void *)input { userdata = input; } 1009 -(void)setUserdata:(void *)input { userdata = input; }
1007 -(void)setFont:(NSFont *)input { [font release]; font = input; [font retain]; } 1010 -(void)setFont:(NSFont *)input { [font release]; font = input; [font retain]; }
1008 -(NSFont *)font { return font; } 1011 -(NSFont *)font { return font; }
1012 -(void)setSize:(NSSize)input { size = input; }
1013 -(NSSize)size { return size; }
1009 -(void)mouseDown:(NSEvent *)theEvent { _event_handler(self, (void *)1, 3); } 1014 -(void)mouseDown:(NSEvent *)theEvent { _event_handler(self, (void *)1, 3); }
1010 -(void)mouseUp:(NSEvent *)theEvent { _event_handler(self, (void *)1, 4); } 1015 -(void)mouseUp:(NSEvent *)theEvent { _event_handler(self, (void *)1, 4); }
1011 -(NSMenu *)menuForEvent:(NSEvent *)theEvent { _event_handler(self, (void *)2, 3); return nil; } 1016 -(NSMenu *)menuForEvent:(NSEvent *)theEvent { _event_handler(self, (void *)2, 3); return nil; }
1012 -(void)rightMouseUp:(NSEvent *)theEvent { _event_handler(self, (void *)2, 4); } 1017 -(void)rightMouseUp:(NSEvent *)theEvent { _event_handler(self, (void *)2, 4); }
1013 -(void)otherMouseDown:(NSEvent *)theEvent { _event_handler(self, (void *)3, 3); } 1018 -(void)otherMouseDown:(NSEvent *)theEvent { _event_handler(self, (void *)3, 3); }
2095 [stepper setFrameOrigin:NSMakePoint(size.width-20,0)]; 2100 [stepper setFrameOrigin:NSMakePoint(size.width-20,0)];
2096 [stepper setFrameSize:NSMakeSize(20,size.height)]; 2101 [stepper setFrameSize:NSMakeSize(20,size.height)];
2097 } 2102 }
2098 else if([handle isMemberOfClass:[DWRender class]]) 2103 else if([handle isMemberOfClass:[DWRender class]])
2099 { 2104 {
2100 _event_handler(handle, nil, 1); 2105 DWRender *render = (DWRender *)handle;
2106 NSSize oldsize = [render size];
2107 NSSize newsize = [render frame].size;
2108
2109 /* Eliminate duplicate configure requests */
2110 if(oldsize.width != newsize.width || oldsize.height != newsize.height)
2111 {
2112 [render setSize:newsize];
2113 _event_handler(handle, nil, 1);
2114 }
2101 } 2115 }
2102 else if([handle isMemberOfClass:[DWSplitBar class]] && size.width > 20 && size.height > 20) 2116 else if([handle isMemberOfClass:[DWSplitBar class]] && size.width > 20 && size.height > 20)
2103 { 2117 {
2104 DWSplitBar *split = (DWSplitBar *)handle; 2118 DWSplitBar *split = (DWSplitBar *)handle;
2105 float percent = [split percent]; 2119 float percent = [split percent];