From 0335b0eada8cb62a07cab29a2b56479318442047 Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Tue, 7 May 2024 19:19:58 -0700 Subject: [PATCH] core: preedit modification sets full screen dirty Fixes #1735 --- src/Surface.zig | 3 +++ src/terminal/Terminal.zig | 3 +++ 2 files changed, 6 insertions(+) diff --git a/src/Surface.zig b/src/Surface.zig index 053d28dd1..8266f3dbf 100644 --- a/src/Surface.zig +++ b/src/Surface.zig @@ -1089,6 +1089,9 @@ pub fn preeditCallback(self: *Surface, preedit_: ?[]const u8) !void { self.renderer_state.preedit = null; } + // Mark preedit dirty flag + self.io.terminal.flags.dirty.preedit = true; + // If we have no text, we're done. We queue a render in case we cleared // a prior preedit (likely). const text = preedit_ orelse { diff --git a/src/terminal/Terminal.zig b/src/terminal/Terminal.zig index cb13e5edf..8dd08a8ba 100644 --- a/src/terminal/Terminal.zig +++ b/src/terminal/Terminal.zig @@ -135,6 +135,9 @@ pub const Dirty = packed struct { /// Screen clear of some kind. This can be due to a screen change, /// erase display, etc. clear: bool = false, + + /// Set when the pre-edit is modified. + preedit: bool = false, }; /// The event types that can be reported for mouse-related activities.