Full screen kittens: Fix incorrect cursor position after kitten quits

DECOM should be reset only after entering alternate screen as it also
changes cursor position. Fixes #3176
This commit is contained in:
Kovid Goyal 2020-12-17 08:58:44 +05:30
parent e48e166584
commit ed4b5f179e
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
2 changed files with 5 additions and 2 deletions

View File

@ -57,6 +57,9 @@ To update |kitty|, :doc:`follow the instructions <binary>`.
- Fix a regression in 0.19.0 that caused a rare crash when using the optional - Fix a regression in 0.19.0 that caused a rare crash when using the optional
:opt:`scrollback_pager_history_size` (:iss:`3049`) :opt:`scrollback_pager_history_size` (:iss:`3049`)
- Full screen kittens: Fix incorrect cursor position after kitten quits
(:iss:`3176`)
0.19.2 [2020-11-13] 0.19.2 [2020-11-13]
------------------- -------------------

View File

@ -264,7 +264,7 @@ def init_state(alternate_screen: bool = True) -> str:
ans = ( ans = (
S7C1T + SAVE_CURSOR + SAVE_PRIVATE_MODE_VALUES + reset_mode('LNM') + S7C1T + SAVE_CURSOR + SAVE_PRIVATE_MODE_VALUES + reset_mode('LNM') +
reset_mode('IRM') + reset_mode('DECKM') + reset_mode('DECSCNM') + reset_mode('IRM') + reset_mode('DECKM') + reset_mode('DECSCNM') +
set_mode('DECARM') + reset_mode('DECOM') + set_mode('DECAWM') + set_mode('DECARM') + set_mode('DECAWM') +
set_mode('DECTCEM') + reset_mode('MOUSE_BUTTON_TRACKING') + set_mode('DECTCEM') + reset_mode('MOUSE_BUTTON_TRACKING') +
reset_mode('MOUSE_MOTION_TRACKING') + reset_mode('MOUSE_MOVE_TRACKING') + reset_mode('MOUSE_MOTION_TRACKING') + reset_mode('MOUSE_MOVE_TRACKING') +
reset_mode('FOCUS_TRACKING') + reset_mode('MOUSE_UTF8_MODE') + reset_mode('FOCUS_TRACKING') + reset_mode('MOUSE_UTF8_MODE') +
@ -274,7 +274,7 @@ def init_state(alternate_screen: bool = True) -> str:
'\033[*x' # reset DECSACE to default region select '\033[*x' # reset DECSACE to default region select
) )
if alternate_screen: if alternate_screen:
ans += set_mode('ALTERNATE_SCREEN') ans += set_mode('ALTERNATE_SCREEN') + reset_mode('DECOM')
ans += clear_screen() ans += clear_screen()
return ans return ans