diff --git a/regress/modal-pane.sh b/regress/modal-pane.sh index b4217aa0a..0ae913b0b 100644 --- a/regress/modal-pane.sh +++ b/regress/modal-pane.sh @@ -337,9 +337,9 @@ $TMUX set -g @modal-prefix no $TMUX set -g @modal-root no $TMUX bind -n z set -g @modal-root yes -modal=$($TMUX new-pane -OKPF '#{pane_id}' -t "$p0" \ +modal=$($TMUX new-pane -ODKPF '#{pane_id}' -t "$p0" \ -x 20 -y 5 -X 20 -Y 10 'cat') || - fail "new-pane -OK failed" + fail "new-pane -ODK failed" sleep 1 $TMUX2 send-keys -t "$OUTER" C-b x z Enter sleep 1 @@ -356,9 +356,50 @@ new_left=$(fmt "$modal" '#{pane_left}') new_top=$(fmt "$modal" '#{pane_top}') [ "$new_left" -gt "$left" ] || [ "$new_top" -gt "$top" ] || fail "key-capturing modal pane did not move" +$TMUX2 send-keys -t "$OUTER" Escape +sleep 1 +must_equal "$(fmt modal:0 '#{window_modal_pane}')" '' + +modal=$($TMUX new-pane -ODKPF '#{pane_id}' -t "$p0" \ + -x 20 -y 5 -X 20 -Y 10 'trap "" INT; exec cat') || + fail "new-pane -ODK failed" +sleep 1 +$TMUX2 send-keys -t "$OUTER" C-c +sleep 1 +must_equal "$(fmt modal:0 '#{window_modal_pane}')" '' + +# A dead modal does not close on Escape or C-c without -D. +modal=$($TMUX new-pane -OPF '#{pane_id}' -t "$p0" \ + -x 20 -y 5 -X 20 -Y 10 'sleep 1') || + fail "new-pane -O failed" +check_ok set-option -p -t "$modal" remain-on-exit on +sleep 2 +must_equal "$(fmt "$modal" '#{pane_dead}:#{pane_modal_flag}')" 1:1 +$TMUX2 send-keys -t "$OUTER" Escape +sleep 1 +must_equal "$(fmt modal:0 '#{window_modal_pane}')" "$modal" check_ok kill-pane -t "$modal" sleep 1 +# failed-key closes successful panes and retains failed panes until a key. +modal=$($TMUX new-pane -OPF '#{pane_id}' -t "$p0" \ + -x 20 -y 5 -X 20 -Y 10 'sleep 1') || + fail "new-pane -O failed" +check_ok set-option -p -t "$modal" remain-on-exit failed-key +sleep 2 +must_equal "$(fmt modal:0 '#{window_modal_pane}')" '' + +modal=$($TMUX new-pane -OPF '#{pane_id}' -t "$p0" \ + -x 20 -y 5 -X 20 -Y 10 'sleep 1; exit 1') || + fail "new-pane -O failed" +check_ok set-option -p -t "$modal" remain-on-exit failed-key +sleep 2 +must_equal "$(fmt "$modal" '#{pane_dead}:#{pane_modal_flag}')" 1:1 +must_equal "$($TMUX show-options -pv -t "$modal" remain-on-exit)" failed-key +$TMUX2 send-keys -t "$OUTER" a +sleep 1 +must_equal "$(fmt modal:0 '#{window_modal_pane}')" '' + # A nonmodal floating pane may remain above zoom, and switching between it and # the zoomed tiled pane must not unzoom the window. check_ok new-window -d -t modal: -n float-over-zoom 'cat'