about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2020-02-02 23:20:19 -0500
committerJune McEnroe <june@causal.agency>2020-02-02 23:20:19 -0500
commitc9470b59a151f639e7985ca545bd67182e7a88d8 (patch)
tree41634ef9323e19992fd8d23e3fd1d129f1baa37b
parentTrack unread and window heat (diff)
downloadcatgirl-c9470b59a151f639e7985ca545bd67182e7a88d8.tar.gz
catgirl-c9470b59a151f639e7985ca545bd67182e7a88d8.zip
Add sequences for toggling focus/paste modes
-rw-r--r--chat.h2
-rw-r--r--ui.c19
2 files changed, 21 insertions, 0 deletions
diff --git a/chat.h b/chat.h
index 43f62fd..76d69c9 100644
--- a/chat.h
+++ b/chat.h
@@ -111,6 +111,8 @@ void handle(struct Message msg);
 
 enum Heat { Cold, Warm, Hot };
 void uiInit(void);
+void uiShow(void);
+void uiHide(void);
 void uiDraw(void);
 void uiShowID(size_t id);
 void uiWrite(size_t id, enum Heat heat, const struct tm *time, const char *str);
diff --git a/ui.c b/ui.c
index b9aadec..072ee84 100644
--- a/ui.c
+++ b/ui.c
@@ -136,6 +136,24 @@ enum {
 	KeyPasteOff,
 };
 
+// XXX: Assuming terminals will be fine with these even if they're unsupported,
+// since they're "private" modes.
+static const char *EnterFocusMode = "\33[?1004h";
+static const char *ExitFocusMode  = "\33[?1004l";
+static const char *EnterPasteMode = "\33[?2004h";
+static const char *ExitPasteMode  = "\33[?2004l";
+
+void uiShow(void) {
+	putp(EnterFocusMode);
+	putp(EnterPasteMode);
+}
+
+void uiHide(void) {
+	putp(ExitFocusMode);
+	putp(ExitPasteMode);
+	endwin();
+}
+
 static void disableFlowControl(void) {
 	struct termios term;
 	int error = tcgetattr(STDOUT_FILENO, &term);
@@ -174,6 +192,7 @@ void uiInit(void) {
 	keypad(input, true);
 	nodelay(input, true);
 	windows.active = windowFor(Network);
+	//uiShow();
 }
 
 void uiDraw(void) {