Subject: (Modernized) patch from egavilan to fix [2863003fff] and [d6b95ce492] - tk frame does not shrink to 0 height if last children unpacked. A virtual event is sent when the pack or grid geometry manager leaves a parent without any slaves

From: fvogel <[email-masked]>
Date: Wed, 21 Sep 2016 06:32:55 +0000

---
 generic/tkGrid.c | 8 +++++---
 generic/tkPack.c | 6 +++++-
 2 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/generic/tkGrid.c b/generic/tkGrid.c
index 2a88b76..a4b4125 100644
--- a/generic/tkGrid.c
+++ b/generic/tkGrid.c
@@ -1733,12 +1733,14 @@ ArrangeGrid(
 
     /*
      * If the master has no slaves anymore, then don't do anything at all:
-     * just leave the master's size as-is. Otherwise there is no way to
-     * "relinquish" control over the master so another geometry manager can
-     * take over.
+     * just leave the master's size as-is, but signal the master with the
+     * <<GeometryManager>> virtual event.
+     * Otherwise there is no way to "relinquish" control over the master
+     * so another geometry manager can take over.
      */
 
     if (masterPtr->slavePtr == NULL) {
+        TkSendVirtualEvent(masterPtr->tkwin, "GeometryManager", NULL);
 	return;
     }
 
diff --git a/generic/tkPack.c b/generic/tkPack.c
index 88a4b2d..d46d64c 100644
--- a/generic/tkPack.c
+++ b/generic/tkPack.c
@@ -600,10 +600,14 @@ ArrangePacking(
 
     /*
      * If the master has no slaves anymore, then don't do anything at all:
-     * just leave the master's size as-is.
+     * just leave the master's size as-is, but signal the master with the
+     * <<GeometryManager>> virtual event.
+     * Otherwise there is no way to "relinquish" control over the master
+     * so another geometry manager can take over.
      */
 
     if (masterPtr->slavePtr == NULL) {
+        TkSendVirtualEvent(masterPtr->tkwin, "GeometryManager", NULL);
 	return;
     }
 
-- 
cgit v0.12