From 95ad5e6d1e20515ed3f37152ce8e22baf45a1a6b Mon Sep 17 00:00:00 2001 From: Ian Thomas Date: Fri, 17 Apr 2026 14:21:18 +0100 Subject: [PATCH 1/2] Fix cursor showing and hiding --- src/utils/input_output.cpp | 24 ++++++++++++++++++++++-- src/utils/input_output.hpp | 6 +++++- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/src/utils/input_output.cpp b/src/utils/input_output.cpp index 9e0ac45..21a0578 100644 --- a/src/utils/input_output.cpp +++ b/src/utils/input_output.cpp @@ -1,19 +1,39 @@ #include "input_output.hpp" +#include + #include "ansi_code.hpp" // OS-specific libraries. #include +unsigned int cursor_hider::s_scope_count = 0; + cursor_hider::cursor_hider(bool hide /* = true */) : m_hide(hide) { - std::cout << (m_hide ? ansi_code::hide_cursor : ansi_code::show_cursor); + s_scope_count++; + write_ansi_code(m_hide); } cursor_hider::~cursor_hider() { - std::cout << (m_hide ? ansi_code::show_cursor : ansi_code::hide_cursor); + s_scope_count--; + + if (s_scope_count == 0) + { + // Ensure cursor is visible when git2cpp exits. + write_ansi_code(false); + } + else + { + write_ansi_code(!m_hide); + } +} + +void cursor_hider::write_ansi_code(bool hide) +{ + std::cout << (hide ? ansi_code::hide_cursor : ansi_code::show_cursor); } alternative_buffer::alternative_buffer() diff --git a/src/utils/input_output.hpp b/src/utils/input_output.hpp index bb11ae1..674435f 100644 --- a/src/utils/input_output.hpp +++ b/src/utils/input_output.hpp @@ -1,6 +1,6 @@ #pragma once -#include +#include #include "common.hpp" @@ -22,7 +22,11 @@ class cursor_hider : noncopyable_nonmovable private: + void write_ansi_code(bool hide); + bool m_hide; + + static unsigned int s_scope_count; }; // Scope object to use alternative output buffer for From 26347d11d4ceb7b00059a10f8a52886537ab68b6 Mon Sep 17 00:00:00 2001 From: Ian Thomas Date: Fri, 17 Apr 2026 15:31:54 +0100 Subject: [PATCH 2/2] Remove unwanted include --- src/utils/input_output.hpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/utils/input_output.hpp b/src/utils/input_output.hpp index 674435f..3e56e55 100644 --- a/src/utils/input_output.hpp +++ b/src/utils/input_output.hpp @@ -1,7 +1,5 @@ #pragma once -#include - #include "common.hpp" // OS-specific libraries.