summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--buffer.c5
-rw-r--r--chat.h1
-rw-r--r--ui.c14
3 files changed, 12 insertions, 8 deletions
diff --git a/buffer.c b/buffer.c
index bc4a2b8..fd69cd3 100644
--- a/buffer.c
+++ b/buffer.c
@@ -184,11 +184,6 @@ int bufferPush(
return flow(&buffer->hard, cols, soft);
}
-int bufferBlank(struct Buffer *buffer) {
- struct Line blank = { .heat = Cold, .str = "" };
- return flow(&buffer->hard, 1, &blank);
-}
-
void bufferReflow(struct Buffer *buffer, int cols) {
buffer->hard.len = 0;
for (size_t i = 0; i < BufferCap; ++i) {
diff --git a/chat.h b/chat.h
index 72b0246..d05121f 100644
--- a/chat.h
+++ b/chat.h
@@ -291,7 +291,6 @@ int bufferPush(
struct Buffer *buffer, int cols,
enum Heat heat, time_t time, const char *str
);
-int bufferBlank(struct Buffer *buffer);
void bufferReflow(struct Buffer *buffer, int cols);
enum Edit {
diff --git a/ui.c b/ui.c
index df51a3d..93c98bb 100644
--- a/ui.c
+++ b/ui.c
@@ -546,7 +546,7 @@ void uiWrite(uint id, enum Heat heat, const time_t *src, const char *str) {
if (!window->unreadSoft++) window->unreadHard = 0;
if (window->mark && heat > Cold) {
if (!window->unreadWarm++) {
- lines += bufferBlank(window->buffer);
+ lines += bufferPush(window->buffer, COLS, Cold, 0, "");
}
if (heat > window->heat) window->heat = heat;
statusUpdate();
@@ -788,6 +788,16 @@ static void showAuto(void) {
}
}
+static void insertBlank(struct Window *window) {
+ int lines = bufferPush(window->buffer, COLS, Cold, 0, "");
+ window->unreadHard += lines;
+ if (window->scroll) {
+ windowScroll(window, lines);
+ } else {
+ windowUpdate();
+ }
+}
+
static void keyCode(int code) {
struct Window *window = windows.ptrs[windows.show];
uint id = window->id;
@@ -810,7 +820,7 @@ static void keyCode(int code) {
break; case KeyMetaD: edit(id, EditDeleteNextWord, 0);
break; case KeyMetaF: edit(id, EditNextWord, 0);
break; case KeyMetaL: bufferList(window->buffer);
- break; case KeyMetaM: bufferBlank(window->buffer); windowUpdate();
+ break; case KeyMetaM: insertBlank(window);
break; case KeyMetaQ: edit(id, EditCollapse, 0);
break; case KeyMetaU: windowScrollUnread(window);
break; case KeyMetaV: windowScrollPage(window, +1);