diff options
author | culler <culler> | 2019-02-07 18:26:37 (GMT) |
---|---|---|
committer | culler <culler> | 2019-02-07 18:26:37 (GMT) |
commit | 422f0f5d203bfb7aad77106e2239a60eb7c0ccc0 (patch) | |
tree | ba6a04d51b7b022c6667c265e7259870e320d447 /unix | |
parent | f3021bb678bdcf54ee9149b3ef746a79cee07f6f (diff) | |
parent | 43fbfc9de2fc5eac324e919e0f04ac80c9a52589 (diff) | |
download | tk-422f0f5d203bfb7aad77106e2239a60eb7c0ccc0.zip tk-422f0f5d203bfb7aad77106e2239a60eb7c0ccc0.tar.gz tk-422f0f5d203bfb7aad77106e2239a60eb7c0ccc0.tar.bz2 |
Fix bug [58665b91dd]: many unixEmbed tests fail.
Diffstat (limited to 'unix')
-rw-r--r-- | unix/tkUnixEmbed.c | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/unix/tkUnixEmbed.c b/unix/tkUnixEmbed.c index 3cb5d26..2ac3013 100644 --- a/unix/tkUnixEmbed.c +++ b/unix/tkUnixEmbed.c @@ -503,7 +503,15 @@ EmbedStructureProc( Tk_ErrorHandler errHandler; if (eventPtr->type == ConfigureNotify) { + /* + * Send a ConfigureNotify to the embedded application. + */ + + if (containerPtr->embeddedPtr != None) { + TkDoConfigureNotify(containerPtr->embeddedPtr); + } if (containerPtr->wrapper != None) { + /* * Ignore errors, since the embedded application could have * deleted its window. @@ -873,6 +881,7 @@ TkpTestembedCmd( Container *containerPtr; Tcl_DString dString; char buffer[50]; + Tcl_Interp *embeddedInterp = NULL, *parentInterp = NULL; ThreadSpecificData *tsdPtr = Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData)); @@ -884,7 +893,17 @@ TkpTestembedCmd( Tcl_DStringInit(&dString); for (containerPtr = tsdPtr->firstContainerPtr; containerPtr != NULL; containerPtr = containerPtr->nextPtr) { + if (containerPtr->embeddedPtr != NULL) { + embeddedInterp = containerPtr->embeddedPtr->mainPtr->interp; + } + if (containerPtr->parentPtr != NULL) { + parentInterp = containerPtr->parentPtr->mainPtr->interp; + } + if (embeddedInterp != interp && parentInterp != interp) { + continue; + } Tcl_DStringStartSublist(&dString); + /* Parent id */ if (containerPtr->parent == None) { Tcl_DStringAppendElement(&dString, ""); } else if (all) { @@ -893,12 +912,15 @@ TkpTestembedCmd( } else { Tcl_DStringAppendElement(&dString, "XXX"); } - if (containerPtr->parentPtr == NULL) { + /* Parent pathName */ + if (containerPtr->parentPtr == NULL || + parentInterp != interp) { Tcl_DStringAppendElement(&dString, ""); } else { Tcl_DStringAppendElement(&dString, containerPtr->parentPtr->pathName); } + /* Wrapper */ if (containerPtr->wrapper == None) { Tcl_DStringAppendElement(&dString, ""); } else if (all) { @@ -907,7 +929,9 @@ TkpTestembedCmd( } else { Tcl_DStringAppendElement(&dString, "XXX"); } - if (containerPtr->embeddedPtr == NULL) { + /* Embedded window pathName */ + if (containerPtr->embeddedPtr == NULL || + embeddedInterp != interp) { Tcl_DStringAppendElement(&dString, ""); } else { Tcl_DStringAppendElement(&dString, |