tk/fix-bug-18a4ba19bd-winfo-containing-gives-wrong-answ.patch
2019-09-30 11:18:32 -04:00

63 lines
1.7 KiB
Diff

From fc0267a0bf485c9a753b488bf4df90b62b555317 Mon Sep 17 00:00:00 2001
From: culler <culler>
Date: Tue, 11 Dec 2018 19:55:11 +0000
Subject: [PATCH 542/693] fix bug [18a4ba19bd]: winfo containing gives wrong
answer on linux.
---
unix/tkUnixWm.c | 24 +++++++++---------------
1 file changed, 9 insertions(+), 15 deletions(-)
diff --git a/unix/tkUnixWm.c b/unix/tkUnixWm.c
index 19ac86cb5..399916ff3 100644
--- a/unix/tkUnixWm.c
+++ b/unix/tkUnixWm.c
@@ -5855,16 +5855,15 @@ Tk_CoordsToWindow(
}
for (wmPtr = (WmInfo *) dispPtr->firstWmPtr; wmPtr != NULL;
wmPtr = wmPtr->nextPtr) {
- if (wmPtr->reparent == child) {
- goto gotToplevel;
- }
- if (wmPtr->wrapperPtr != NULL) {
- if (child == wmPtr->wrapperPtr->window) {
- goto gotToplevel;
- }
- } else if (child == wmPtr->winPtr->window) {
- goto gotToplevel;
- }
+ winPtr = wmPtr->winPtr;
+ if (wmPtr->winPtr == NULL) {
+ continue;
+ }
+ if (x >= winPtr->changes.x &&
+ x < winPtr->changes.x + winPtr->changes.width &&
+ y < winPtr->changes.y + winPtr->changes.height) {
+ goto gotToplevel;
+ }
}
x = childX;
y = childY;
@@ -5882,7 +5881,6 @@ Tk_CoordsToWindow(
Tk_DeleteErrorHandler(handler);
handler = NULL;
}
- winPtr = wmPtr->winPtr;
if (winPtr->mainPtr != ((TkWindow *) tkwin)->mainPtr) {
return NULL;
}
@@ -5897,10 +5895,6 @@ Tk_CoordsToWindow(
x = childX - winPtr->changes.x;
y = childY - winPtr->changes.y;
- if ((x < 0) || (x >= winPtr->changes.width)
- || (y >= winPtr->changes.height)) {
- return NULL;
- }
if (y < 0) {
winPtr = (TkWindow *) wmPtr->menubar;
if (winPtr == NULL) {
--
2.19.1