diff --git a/src/renderer/Metal.zig b/src/renderer/Metal.zig index 40247a652..5692d0936 100644 --- a/src/renderer/Metal.zig +++ b/src/renderer/Metal.zig @@ -530,7 +530,13 @@ pub fn render( // Setup our cursor state if (self.focused) { - self.cursor_visible = self.cursor_visible and state.cursor.visible; + self.cursor_visible = visible: { + // If the cursor isn't a blinking style, then never blink. + if (!state.cursor.style.blinking()) break :visible true; + + // Otherwise, adhere to our current state. + break :visible self.cursor_visible and state.cursor.visible; + }; self.cursor_style = renderer.CursorStyle.fromTerminal(state.cursor.style) orelse .box; } else { self.cursor_visible = true; diff --git a/src/renderer/OpenGL.zig b/src/renderer/OpenGL.zig index 45251bdd2..ab4b2c98e 100644 --- a/src/renderer/OpenGL.zig +++ b/src/renderer/OpenGL.zig @@ -724,7 +724,13 @@ pub fn render( // Setup our cursor state if (self.focused) { - self.cursor_visible = self.cursor_visible and state.cursor.visible; + self.cursor_visible = visible: { + // If the cursor isn't a blinking style, then never blink. + if (!state.cursor.style.blinking()) break :visible true; + + // Otherwise, adhere to our current state. + break :visible self.cursor_visible and state.cursor.visible; + }; self.cursor_style = renderer.CursorStyle.fromTerminal(state.cursor.style) orelse .box; } else { self.cursor_visible = true;