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)
             {