summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCurtis McEnroe2018-08-08 00:55:45 -0400
committerCurtis McEnroe2018-08-08 00:55:45 -0400
commitb66c8abf707e6574f6867b646dfb2549a5a7147f (patch)
tree438c3fc6eeea32b1764b97cbc94810bb5bf026c6
parentc0ee457ab146326a961008e518b7ffbc581ec744 (diff)
Set log marker on FocusOut event
All of this needs refactoring, probably separating the line editing out from the actual input handling.
-rw-r--r--ui.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/ui.c b/ui.c
index cc7dcf8..937fa63 100644
--- a/ui.c
+++ b/ui.c
@@ -20,6 +20,7 @@
#include <err.h>
#include <locale.h>
#include <stdarg.h>
+#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -39,6 +40,15 @@
#define A_ITALIC A_NORMAL
#endif
+static void focusEnable(void) {
+ printf("\33[?1004h");
+ fflush(stdout);
+}
+static void focusDisable(void) {
+ printf("\33[?1004l");
+ fflush(stdout);
+}
+
static void colorInit(void) {
start_color();
use_default_colors();
@@ -98,6 +108,7 @@ void uiInit(void) {
cbreak();
noecho();
+ focusEnable();
colorInit();
ui.topic = newpad(2, TOPIC_COLS);
@@ -123,6 +134,7 @@ static void uiResize(void) {
}
void uiHide(void) {
+ focusDisable();
endwin();
printf(
"This program is AGPLv3 free software!\n"
@@ -427,6 +439,17 @@ static void complete(void) {
}
static void keyChar(wint_t ch) {
+ static bool esc, csi;
+
+ if (csi) {
+ csi = false;
+ if (ch == L'O') logMark();
+ return;
+ }
+ csi = (esc && ch == L'[');
+ esc = (ch == L'\33');
+ if (csi) return;
+
switch (ch) {
break; case CTRL('L'): uiRedraw();
break; case CTRL('B'): reject(); left();