Skip to content

Commit ee09e90

Browse files
committed
added option to hide the cursor to the Terminal class
1 parent 53e6778 commit ee09e90

File tree

8 files changed

+19
-12
lines changed

8 files changed

+19
-12
lines changed

cpp-terminal/base.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,14 +122,18 @@ void Term::get_cursor_position(int& rows, int& cols) {
122122

123123
Term::Terminal::Terminal(bool _clear_screen,
124124
bool enable_keyboard,
125-
bool disable_ctrl_c)
125+
bool disable_ctrl_c,
126+
bool _hide_cursor)
126127
: BaseTerminal(enable_keyboard, disable_ctrl_c),
127-
clear_screen{_clear_screen} {
128+
clear_screen{_clear_screen},
129+
hide_cursor{_hide_cursor} {
128130
if (clear_screen) {
129131
write(save_screen() +
130132
// fixes consoles that ignore save_screen()
131133
clear_screen_buffer());
132134
}
135+
if (hide_cursor)
136+
write(cursor_off());
133137
}
134138
Term::Terminal::Terminal(bool _clear_screen)
135139
: BaseTerminal(false, true), clear_screen{_clear_screen} {
@@ -147,4 +151,6 @@ Term::Terminal::~Terminal() {
147151
// restores the screen, might be ignored by some terminals
148152
restore_screen());
149153
}
154+
if (hide_cursor)
155+
write(cursor_on());
150156
}

cpp-terminal/base.hpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,9 +109,13 @@ void get_cursor_position(int&, int&);
109109
class Terminal : public Private::BaseTerminal {
110110
private:
111111
bool clear_screen{};
112+
bool hide_cursor{};
112113

113114
public:
114-
Terminal(bool _clear_screen, bool enable_keyboard, bool disable_ctrl_c);
115+
Terminal(bool _clear_screen,
116+
bool enable_keyboard,
117+
bool disable_ctrl_c,
118+
bool);
115119
// providing no parameters will disable the keyboard and ctrl+c
116120
Terminal(bool _clear_screen);
117121

examples/keys.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ using Term::Terminal;
1010

1111
int main() {
1212
try {
13-
Terminal term(true, true, false);
13+
Terminal term(true, true, false, false);
1414
int rows{}, cols{};
1515
Term::get_term_size(rows, cols);
1616
std::cout << "Dimension:" << cols << " " << rows << std::endl;

examples/kilo.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -929,7 +929,7 @@ int main(int argc, char* argv[]) {
929929
// being called when exception happens and the terminal is not put into
930930
// correct state.
931931
try {
932-
Terminal term(true, true, false);
932+
Terminal term(true, true, false, false);
933933
initEditor();
934934
if (argc >= 2) {
935935
editorOpen(argv[1]);

examples/menu.cpp

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ void render(int rows, int cols, int menuheight, int menuwidth, int menupos) {
1616
std::string scr;
1717
scr.reserve(16 * 1024);
1818

19-
scr.append(cursor_off());
2019
scr.append(move_cursor(1, 1));
2120

2221
int menux0 = (cols - menuwidth) / 2;
@@ -74,14 +73,12 @@ void render(int rows, int cols, int menuheight, int menuwidth, int menupos) {
7473
scr.append("Menu width: " + std::to_string(menuwidth) + " \n");
7574
scr.append("Menu height: " + std::to_string(menuheight) + " \n");
7675

77-
scr.append(cursor_on());
78-
7976
std::cout << scr << std::flush;
8077
}
8178

8279
int main() {
8380
try {
84-
Terminal term(true, true, false);
81+
Terminal term(true, true, false, true);
8582
int rows{}, cols{};
8683
Term::get_term_size(rows, cols);
8784
int pos = 5;

examples/menu_window.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ std::string render(Term::Window& scr,
5050

5151
int main() {
5252
try {
53-
Terminal term(true, true, false);
53+
Terminal term(true, true, false, false);
5454
int rows{}, cols{};
5555
Term::get_term_size(rows, cols);
5656
int pos = 5;

examples/menu_window_24bit.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ std::string render(Term::Window_24bit& scr,
5050

5151
int main() {
5252
try {
53-
Terminal term(true, true, false);
53+
Terminal term(true, true, false, false);
5454
int rows{}, cols{};
5555
Term::get_term_size(rows, cols);
5656
int pos = 5;

examples/prompt_multiline.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ bool determine_completeness([[maybe_unused]] std::string command) {
2222

2323
int main() {
2424
try {
25-
Terminal term(false, true, false);
25+
Terminal term(false, true, false, false);
2626
std::cout << "Interactive prompt." << std::endl;
2727
std::cout << " * Use Ctrl-D to exit." << std::endl;
2828
std::cout << " * Use Enter to submit." << std::endl;

0 commit comments

Comments
 (0)