Hi all,

I found and fixed a bug where window sizes weren't being recalculated
in grouped sessions when a session's child dies, killing the window.

I've included the repro steps in the commit message.
Let me know if you'd like any changes.

    Daniel

----

>From d7c541ad37dbe14dc50a2878448f5de0b753286c Mon Sep 17 00:00:00 2001
From: Daniel Ralston <wubbul...@gmail.com>
Date: Fri, 19 Apr 2013 01:13:07 -0700
Subject: [PATCH] [PATCH] FIX window resizing bug when a grouped session's
 child dies

When the child of a grouped session dies, and the session's client
switches to the same window as the client of another session it is
grouped with, sizes should be recalculated the same as if the user had
switched to that other window manually.

Steps to Reproduce Bug:
 1. In an xterm:
   $ tmux new -s TEST_SESSION

 2. Make sure the tmux session has aggressive-resizing enabled:
   <prefix>-: aggressive resizing on

 3. In another xterm:
   $ tmux new -t TEST_SESSION

 4. Create a new window running a shell (or whatever program you want)
    in the second xterm, and switch to it so the two tmux clients are
    viewing different windows.

 5. Resize the second xterm so it is smaller than the first.

 6. Kill the program in the second xterm so that its window closes. This
    will cause it to switch to the same window as the first tmux
    session.

 7. In the first xterm, even though a smaller tmux session is now
    viewing that window, the size has not been updated.
---
 server-fn.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/server-fn.c b/server-fn.c
index 566925f..4db4eb5 100644
--- a/server-fn.c
+++ b/server-fn.c
@@ -283,6 +283,12 @@ server_kill_window(struct window *w)
         if (options_get_number(&s->options, "renumber-windows"))
             session_renumber_windows(s);
     }
+
+        /* If this session is grouped with another session, this
+         * session's client is switching to the same window that the
+         * other session's client is focused on, and two two clients
+         * are different sizes, we need to recalculate sizes. */
+        recalculate_sizes();
 }

 int
--
1.8.2.1

------------------------------------------------------------------------------
Precog is a next-generation analytics platform capable of advanced
analytics on semi-structured data. The platform includes APIs for building
apps and a phenomenal toolset for data science. Developers can use
our toolset for easy data analysis & visualization. Get a free account!
http://www2.precog.com/precogplatform/slashdotnewsletter
_______________________________________________
tmux-users mailing list
tmux-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tmux-users

Reply via email to