Mercurial > dwindows
changeset 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 |
files | mac/dw.m |
diffstat | 1 files changed, 15 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/mac/dw.m Thu Mar 31 03:35:31 2011 +0000 +++ b/mac/dw.m Thu Mar 31 17:22:42 2011 +0000 @@ -985,11 +985,14 @@ { void *userdata; NSFont *font; + NSSize size; } -(void *)userdata; -(void)setUserdata:(void *)input; -(void)setFont:(NSFont *)input; -(NSFont *)font; +-(void)setSize:(NSSize)input; +-(NSSize)size; -(void)mouseDown:(NSEvent *)theEvent; -(void)mouseUp:(NSEvent *)theEvent; -(NSMenu *)menuForEvent:(NSEvent *)theEvent; @@ -1006,6 +1009,8 @@ -(void)setUserdata:(void *)input { userdata = input; } -(void)setFont:(NSFont *)input { [font release]; font = input; [font retain]; } -(NSFont *)font { return font; } +-(void)setSize:(NSSize)input { size = input; } +-(NSSize)size { return size; } -(void)mouseDown:(NSEvent *)theEvent { _event_handler(self, (void *)1, 3); } -(void)mouseUp:(NSEvent *)theEvent { _event_handler(self, (void *)1, 4); } -(NSMenu *)menuForEvent:(NSEvent *)theEvent { _event_handler(self, (void *)2, 3); return nil; } @@ -2097,7 +2102,16 @@ } else if([handle isMemberOfClass:[DWRender class]]) { - _event_handler(handle, nil, 1); + DWRender *render = (DWRender *)handle; + NSSize oldsize = [render size]; + NSSize newsize = [render frame].size; + + /* Eliminate duplicate configure requests */ + if(oldsize.width != newsize.width || oldsize.height != newsize.height) + { + [render setSize:newsize]; + _event_handler(handle, nil, 1); + } } else if([handle isMemberOfClass:[DWSplitBar class]] && size.width > 20 && size.height > 20) {