Files
tmux/regress/border-zoom-click.sh
Michael Grant 03c87a8b2f Use the pane's own zoom flag for the border button.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 16:18:27 +01:00

62 lines
1.9 KiB
Bash

#!/bin/sh
# The zoom button on a pane's border must zoom the pane that was clicked, not
# the active pane.
PATH=/bin:/usr/bin
TERM=screen
[ -z "$TEST_TMUX" ] && TEST_TMUX=$(readlink -f ../tmux)
TMUX="$TEST_TMUX -LtestA$$ -f/dev/null"
TMUX2="$TEST_TMUX -LtestB$$ -f/dev/null"
cleanup()
{
$TMUX kill-server >/dev/null 2>&1
$TMUX2 kill-server >/dev/null 2>&1
}
fail()
{
echo "$*" >&2
cleanup
exit 1
}
cleanup
$TMUX new-session -d -s inner -x 80 -y 24 'sleep 100' || exit 1
$TMUX set -g mouse on || exit 1
$TMUX set -g pane-border-status top || exit 1
$TMUX split-window -d -h 'sleep 100' || exit 1
active=$($TMUX display-message -p '#{pane_id}') || exit 1
other=$($TMUX list-panes -F '#{pane_id}' | grep -v "^$active\$") || exit 1
$TMUX2 new-session -d -x 80 -y 24 "$TMUX attach -t inner" || exit 1
sleep 1
OUTER=$($TMUX2 list-panes -F '#{pane_id}' | head -1)
[ -n "$OUTER" ] || fail "No outer pane."
# The right hand pane's border ends with the buttons [f][z][x]; the zoom one is
# the middle button, at column 76 (1-based) on the first row.
seq=$(printf '\033[<0;76;1M\033[<0;76;1m')
$TMUX2 send-keys -t "$OUTER" -l "$seq" || fail "send-keys failed."
sleep 1
got=$($TMUX display-message -p -t "$other" '#{pane_zoomed_flag}')
[ "$got" = "1" ] || fail "clicked pane zoomed flag '$got', expected '1'"
got=$($TMUX display-message -p -t "$active" '#{pane_zoomed_flag}')
[ "$got" = "0" ] || fail "active pane zoomed flag '$got', expected '0'"
# Only the zoomed pane shows the unzoom button. A floating pane above it is not
# zoomed so it shows the zoom button, whatever else is zoomed.
$TMUX new-pane -d -x 24 -y 5 -X 20 -Y 3 'sleep 100' || fail "new-pane failed."
sleep 1
screen=$($TMUX2 capture-pane -p -t "$OUTER")
u=$(echo "$screen" | grep -o '\[u\]' | wc -l)
z=$(echo "$screen" | grep -o '\[z\]' | wc -l)
[ "$u" -eq 1 ] && [ "$z" -eq 1 ] ||
fail "found $u unzoom and $z zoom buttons, expected one of each"
cleanup
exit 0