# HG changeset patch # User bsmith@81767d24-ef19-dc11-ae90-00e081727c95 # Date 1311639957 0 # Node ID d7eafaa054aba9c111d817b2a377537581ae374c # Parent 13ea7575d9e8839fce1639e335493648e1d5d96d Added support for dw_window_redraw() causing splitbar panes to redraw without having to wait for a resize event from window resizing or splitbar movement. diff -r 13ea7575d9e8 -r d7eafaa054ab mac/dw.m --- a/mac/dw.m Mon Jul 25 23:22:04 2011 +0000 +++ b/mac/dw.m Tue Jul 26 00:25:57 2011 +0000 @@ -690,15 +690,22 @@ @end @interface DWWindow : NSWindow +{ + int redraw; +} -(void)sendEvent:(NSEvent *)theEvent; -(void)keyDown:(NSEvent *)theEvent; -(void)mouseDragged:(NSEvent *)theEvent; +-(int)redraw; +-(void)setRedraw:(int)val; @end @implementation DWWindow -(void)sendEvent:(NSEvent *)theEvent { if([theEvent type] == NSKeyDown) { _event_handler(self, theEvent, 2); } [super sendEvent:theEvent]; } -(void)keyDown:(NSEvent *)theEvent { } -(void)mouseDragged:(NSEvent *)theEvent { _event_handler(self, theEvent, 5); } +-(int)redraw { return redraw; } +-(void)setRedraw:(int)val { redraw = val; } @end /* Subclass for a render area type */ @@ -2558,16 +2565,21 @@ [stepper setFrameOrigin:NSMakePoint(size.width-20,0)]; [stepper setFrameSize:NSMakeSize(20,size.height)]; } - else if([handle isMemberOfClass:[DWSplitBar class]] && size.width > 20 && size.height > 20) + else if([handle isMemberOfClass:[DWSplitBar class]]) { DWSplitBar *split = (DWSplitBar *)handle; + DWWindow *window = (DWWindow *)[split window]; float percent = [split percent]; - if(percent > 0) + if(percent > 0 && size.width > 20 && size.height > 20) { dw_splitbar_set(handle, percent); [split setPercent:0]; } + else if([window redraw]) + { + [split splitViewDidResizeSubviews:nil]; + } } if(thisbox->type == DW_HORZ) currentx += width + vectorx + (pad * 2); @@ -7660,9 +7672,11 @@ */ void API dw_window_redraw(HWND handle) { - NSWindow *window = handle; + DWWindow *window = handle; + [window setRedraw:YES]; [[window contentView] showWindow]; [window flushWindow]; + [window setRedraw:NO]; } /*