From b1f4b2d8edf01f84d27a0391054fb8f73e35fbbb Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Mon, 27 Sep 2021 11:33:21 +0530 Subject: [PATCH] Use pending updates for unicode input kitten Avoids all possibility of flicker --- kittens/tui/handler.py | 10 ++++++++++ kittens/unicode_input/main.py | 1 + 2 files changed, 11 insertions(+) diff --git a/kittens/tui/handler.py b/kittens/tui/handler.py index aafe461f8..a7cb98d70 100644 --- a/kittens/tui/handler.py +++ b/kittens/tui/handler.py @@ -147,6 +147,16 @@ class Handler: def pending_update(self) -> ContextManager[None]: return pending_update(self.write) + @classmethod + def with_pending_update(cls, func: Callable) -> Callable: + from functools import wraps + + @wraps(func) + def f(*a: Any, **kw: Any) -> Any: + with a[0].pending_update(): + return func(*a, **kw) + return f + class HandleResult: diff --git a/kittens/unicode_input/main.py b/kittens/unicode_input/main.py index 2ab396217..bcfc60827 100644 --- a/kittens/unicode_input/main.py +++ b/kittens/unicode_input/main.py @@ -391,6 +391,7 @@ class UnicodeInput(Handler): text += ' ' * extra self.print(styled(text, reverse=True)) + @Handler.with_pending_update def draw_screen(self) -> None: self.write(clear_screen()) self.draw_title_bar()