Mercurial > dwindows
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]; |