From ea268bae5eb2025acb5fe9f5e1e12f7657455a29 Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Mon, 10 Jul 2023 11:27:37 -0700 Subject: [PATCH] renderer: do not blink explicit steady cursor styles --- src/renderer/Metal.zig | 8 +++++++- src/renderer/OpenGL.zig | 8 +++++++- 2 files changed, 14 insertions(+), 2 deletions(-) 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;