diff options
author | das <das> | 2007-05-31 13:38:13 (GMT) |
---|---|---|
committer | das <das> | 2007-05-31 13:38:13 (GMT) |
commit | 374e000a01924c7de4eb44cdec25581214de0630 (patch) | |
tree | e2d1166c8c3d68d89d570e6d4a60e2fa5bd33f82 /macosx/tkMacOSXWindowEvent.c | |
parent | e9883bba4b0507959e2d037aca5db25e08a298cc (diff) | |
download | tk-374e000a01924c7de4eb44cdec25581214de0630.zip tk-374e000a01924c7de4eb44cdec25581214de0630.tar.gz tk-374e000a01924c7de4eb44cdec25581214de0630.tar.bz2 |
* macosx/tkMacOSXWindowEvent.c (GenerateUpdateEvent): complete all
pending idle-time redraws before newly posted Expose events are
processed; add bounds of redrawn windows to update region to ensure all
child windows overdrawn by parents are redrawn.
* macosx/tkMacOSXWindowEvent.c: centralize clip and window invalidation
* macosx/tkMacOSXSubwindows.c: after location/size changes in the
* macosx/tkMacOSXWm.c: BoundsChanged carbon event handler;
correct/add window invalidation after window attribute changes.
* macosx/tkMacOSXSubwindows.c (XResizeWindow, XMoveResizeWindow,
XMoveWindow): factor out common code dealing with embedded and
non-toplevel windows; remove unnecessary clip and window invalidation.
* macosx/tkMacOSXButton.c (TkpDisplayButton): move clip setup closer to
native button drawing calls.
* macosx/tkMacOSXWm.c (TkMacOSXIsWindowZoomed, TkMacOSXZoomToplevel):
correct handle gridded windows in max size calculations.
* macosx/tkMacOSXEvent.c (TkMacOSXFlushWindows): use HIWindowFlush API
when available.
* macosx/tkMacOSXColor.c: cleanup whitespace and formatting.
* macosx/tkMacOSXDraw.c:
* macosx/tkMacOSXSubwindows.c:
* macosx/tkMacOSXWm.c:
Diffstat (limited to 'macosx/tkMacOSXWindowEvent.c')
-rw-r--r-- | macosx/tkMacOSXWindowEvent.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/macosx/tkMacOSXWindowEvent.c b/macosx/tkMacOSXWindowEvent.c index 2f7ddd8..70cad46 100644 --- a/macosx/tkMacOSXWindowEvent.c +++ b/macosx/tkMacOSXWindowEvent.c @@ -54,7 +54,7 @@ * software in accordance with the terms specified in this * license. * - * RCS: @(#) $Id: tkMacOSXWindowEvent.c,v 1.23 2007/05/30 06:35:55 das Exp $ + * RCS: @(#) $Id: tkMacOSXWindowEvent.c,v 1.24 2007/05/31 13:38:17 das Exp $ */ #include "tkMacOSXInt.h" @@ -314,6 +314,9 @@ TkMacOSXProcessWindowEvent( height = bounds.bottom - bounds.top; flags |= TK_SIZE_CHANGED; } + TkMacOSXInvalClipRgns((Tk_Window) winPtr); + TkMacOSXInvalidateWindow((MacDrawable *) window, + TK_PARENT_WINDOW); TkGenWMConfigureEvent((Tk_Window)winPtr, x, y, width, height, flags); if (attr & kWindowBoundsChangeUserResize || @@ -467,6 +470,14 @@ GenerateUpdateEvent(Window window) result = GenerateUpdates(tkMacOSXtmpRgn1, &updateBounds, winPtr); EndUpdate(macWindow); SetEmptyRgn(tkMacOSXtmpRgn1); + if (result) { + /* + * Ensure there are no pending idle-time redraws that could prevent + * the just posted Expose events from generating new redraws. + */ + + Tcl_DoOneEvent(TCL_IDLE_EVENTS|TCL_DONT_WAIT); + } return result; } @@ -522,6 +533,9 @@ GenerateUpdates( SectRgn(damageRgn, updateRgn, damageRgn); OffsetRgn(damageRgn, -bounds.left, -bounds.top); GetRegionBounds(damageRgn, &damageBounds); + RectRgn(damageRgn, &bounds); + UnionRgn(damageRgn, updateRgn, updateRgn); + GetRegionBounds(updateRgn, updateBounds); SetEmptyRgn(damageRgn); event.xany.serial = Tk_Display(winPtr)->request; |