degesch: fix two minor issues

- completely new unread markers could be created in active buffers
 - control characters confused word wrapping
This commit is contained in:
Přemysl Eric Janouch 2016-03-26 20:59:37 +01:00
parent f964495d1a
commit dc71af9c31
1 changed files with 7 additions and 1 deletions

View File

@ -3292,6 +3292,10 @@ line_char_new (const char *mb, size_t mb_len, wchar_t wc)
memcpy (self->bytes, mb, (self->len = MIN (mb_len, sizeof self->bytes))); memcpy (self->bytes, mb, (self->len = MIN (mb_len, sizeof self->bytes)));
self->width = wcwidth ((self->wide = wc)); self->width = wcwidth ((self->wide = wc));
// Typically various control characters
if (self->width < 0)
self->width = 0;
self->attrs.bg = self->attrs.fg = -1; self->attrs.bg = self->attrs.fg = -1;
self->attrs.named = ATTR_RESET; self->attrs.named = ATTR_RESET;
return self; return self;
@ -3777,7 +3781,9 @@ log_formatter (struct app_context *ctx,
else else
displayed = false; displayed = false;
if (!displayed || buffer == ctx->current_buffer) // Advance the unread marker in active buffers but don't create a new one
if (!displayed
|| (buffer == ctx->current_buffer && buffer->new_messages_count))
{ {
buffer->new_messages_count++; buffer->new_messages_count++;
if (flags & BUFFER_LINE_UNIMPORTANT) if (flags & BUFFER_LINE_UNIMPORTANT)