summaryrefslogtreecommitdiffstats
path: root/unix
diff options
context:
space:
mode:
authorculler <culler>2019-02-07 18:26:37 (GMT)
committerculler <culler>2019-02-07 18:26:37 (GMT)
commit422f0f5d203bfb7aad77106e2239a60eb7c0ccc0 (patch)
treeba6a04d51b7b022c6667c265e7259870e320d447 /unix
parentf3021bb678bdcf54ee9149b3ef746a79cee07f6f (diff)
parent43fbfc9de2fc5eac324e919e0f04ac80c9a52589 (diff)
downloadtk-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.c28
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,