summary refs log tree commit diff
diff options
context:
space:
mode:
authorCurtis McEnroe2018-09-14 23:37:09 -0400
committerCurtis McEnroe2018-09-14 23:37:09 -0400
commit3e2a9c20569478e9f50a86c20fb7e7ec245c9d01 (patch)
tree061215de0e1a0ee04d33c385347d2b7fca37e031
parent835d3a452a3f0774befc818aa08a6446829c0644 (diff)
Factor out uiPrompt to call on nick change
-rw-r--r--chat.h1
-rw-r--r--handle.c5
-rw-r--r--ui.c32
3 files changed, 22 insertions, 16 deletions
diff --git a/chat.h b/chat.h
index 93d3ae9..a4d1366 100644
--- a/chat.h
+++ b/chat.h
@@ -111,6 +111,7 @@ void uiHide(void);
 void uiExit(void);
 void uiDraw(void);
 void uiRead(void);
+void uiPrompt(void);
 
 void uiViewTag(struct Tag tag);
 void uiViewNum(int num);
diff --git a/handle.c b/handle.c
index 938315b..05e94e4 100644
--- a/handle.c
+++ b/handle.c
@@ -315,7 +315,10 @@ static void handleNick(char *prefix, char *params) {
 	char *prev, *user, *next;
 	shift(prefix, &prev, &user, NULL, params, 1, 0, &next);
 
-	if (isSelf(prev, user)) selfNick(next);
+	if (isSelf(prev, user)) {
+		selfNick(next);
+		uiPrompt();
+	}
 
 	struct Tag tag;
 	while (TagNone.id != (tag = tabTag(prev)).id) {
diff --git a/ui.c b/ui.c
index 0e22fd8..93542dd 100644
--- a/ui.c
+++ b/ui.c
@@ -329,7 +329,8 @@ static void uiView(struct View *view) {
 	if (ui.view) ui.view->mark = true;
 	viewUnmark(view);
 	ui.view = view;
-	uiRead();
+	uiStatus();
+	uiPrompt();
 }
 
 void uiViewTag(struct Tag tag) {
@@ -504,23 +505,10 @@ static bool isCommand(struct Tag tag, const wchar_t *input) {
 	return !extra || (space && extra > space);
 }
 
-void uiRead(void) {
-	uiShow();
-
-	int ret;
-	wint_t ch;
-	while (ERR != (ret = wget_wch(ui.input, &ch))) {
-		if (ret == KEY_CODE_YES) {
-			keyCode(ch);
-		} else {
-			keyChar(ch);
-		}
-	}
-
+void uiPrompt(void) {
 	const wchar_t *input = editHead();
 
 	// TODO: Avoid reformatting these on every read.
-	// FIXME: Reformat when nick changes. Wouldn't FRP be nice?
 	wchar_t *prompt = NULL;
 	int len = 0;
 	if (isAction(ui.view->tag, input) && editTail() >= &input[4]) {
@@ -552,3 +540,17 @@ void uiRead(void) {
 	wclrtoeol(ui.input);
 	wmove(ui.input, 0, x);
 }
+
+void uiRead(void) {
+	uiShow();
+	int ret;
+	wint_t ch;
+	while (ERR != (ret = wget_wch(ui.input, &ch))) {
+		if (ret == KEY_CODE_YES) {
+			keyCode(ch);
+		} else {
+			keyChar(ch);
+		}
+	}
+	uiPrompt();
+}