From b9ab37f0769bdcd4add89c49d8c056c12e698850 Mon Sep 17 00:00:00 2001 From: wolfsuit Date: Sun, 21 Mar 2004 04:07:12 +0000 Subject: XMoveWindow and XMoveResizeWindow need to propagate ConfigureNotify events to the children of the moved or resized window. --- ChangeLog | 8 ++++++++ macosx/tkMacOSXSubwindows.c | 50 +++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 56 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6034062..dbd4a74 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2004-03-20 Jim Ingham + + * macosx/tkMacOSXSubwindows.c (GenerateConfigureNotify): New + function. + (XMoveWindow): Generate configure notify events for child + widgets on move. + (XMoveResizeWindow): Ditto. + 2004-03-18 Daniel Steffen Removed support for Mac OS Classic platform [Patch 918139] diff --git a/macosx/tkMacOSXSubwindows.c b/macosx/tkMacOSXSubwindows.c index 43bb5a8..20b4506 100644 --- a/macosx/tkMacOSXSubwindows.c +++ b/macosx/tkMacOSXSubwindows.c @@ -9,7 +9,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tkMacOSXSubwindows.c,v 1.4 2004/02/16 00:19:42 wolfsuit Exp $ + * RCS: @(#) $Id: tkMacOSXSubwindows.c,v 1.5 2004/03/21 04:07:12 wolfsuit Exp $ */ #include "tkInt.h" @@ -26,7 +26,13 @@ */ static RgnHandle tmpRgn = NULL; -static void UpdateOffsets _ANSI_ARGS_((TkWindow *winPtr, int deltaX, int deltaY)); +/* + * Prototypes for functions used only in this file. + */ + +static void GenerateConfigureNotify (TkWindow *winPtr, int includeWin); +static void UpdateOffsets _ANSI_ARGS_((TkWindow *winPtr, + int deltaX, int deltaY)); /* *---------------------------------------------------------------------- @@ -361,10 +367,48 @@ XResizeWindow( UpdateOffsets(macWin->winPtr, deltaX, deltaY); } } + /* *---------------------------------------------------------------------- * + * GenerateConfigureNotify -- + * + * Generates ConfigureNotify events for all the child widgets + * of the widget passed in the winPtr parameter. If includeWin + * is true, also generates ConfigureNotify event for the + * widget itself. + * + * Results: + * None. + * + * Side effects: + * ConfigureNotify events will be posted. + * + *---------------------------------------------------------------------- + */ + +static void +GenerateConfigureNotify (TkWindow *winPtr, int includeWin) +{ + TkWindow *childPtr; + + for (childPtr = winPtr->childList; childPtr != NULL; + childPtr = childPtr->nextPtr) { + if (!Tk_IsMapped(childPtr) || Tk_IsTopLevel(childPtr)) { + continue; + } + GenerateConfigureNotify(childPtr, 1); + } + if (includeWin) { + TkDoConfigureNotify(winPtr); + } +} + + +/* + *---------------------------------------------------------------------- + * * XMoveResizeWindow -- * * Move or resize a given X window. See X windows documentation @@ -465,6 +509,7 @@ XMoveResizeWindow( UpdateOffsets(macWin->winPtr, deltaX, deltaY); TkMacOSXWinBounds(macWin->winPtr, &bounds); InvalWindowRect(GetWindowFromPort(destPort),&bounds); + GenerateConfigureNotify(macWin->winPtr, 0); } } @@ -566,6 +611,7 @@ XMoveWindow( UpdateOffsets(macWin->winPtr, deltaX, deltaY); TkMacOSXWinBounds(macWin->winPtr, &bounds); InvalWindowRect(GetWindowFromPort(destPort),&bounds); + GenerateConfigureNotify(macWin->winPtr, 0); } } -- cgit v0.12