]> git.ipfire.org Git - thirdparty/vim.git/commit
patch 9.2.0483: popup: terminal embedded in an opacity popup freezes Vim on input v9.2.0483
authorHirohito Higashi <h.east.727@gmail.com>
Fri, 15 May 2026 15:02:48 +0000 (15:02 +0000)
committerChristian Brabandt <cb@256bit.org>
Fri, 15 May 2026 15:02:48 +0000 (15:02 +0000)
commitf281493c491c58e2452111e0e9b78edce486f07e
treeaf941a121e65a193588f524ea4fc713414aeeb02
parent37d61dae7272752269a57da34bff2278e5304f4e
patch 9.2.0483: popup: terminal embedded in an opacity popup freezes Vim on input

Problem:  When a terminal buffer is shown inside a popup with 'opacity'
          set to a value other than 100, typing into it freezes Vim.
          Only the first keystroke is drawn; afterwards no input is
          processed and the screen stops updating.
Solution: When marking background lines for redraw to keep opacity
          blend cells fresh, do not raise must_redraw.  This marking
          happens from inside update_screen() (via
          may_update_popup_mask()), so raising must_redraw makes
          terminal_loop()'s "while (must_redraw != 0) update_screen()"
          loop never terminate.  Add redraw_win_range_now() that
          updates only the per-window state and use it from
          redraw_win_under_opacity_popup() (Hirohito Higashi)

fixes:  #20214
closes: #20220

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
src/drawscreen.c
src/popupwin.c
src/proto/drawscreen.pro
src/testdir/test_popupwin.vim
src/version.c