Compare commits

..

No commits in common. "941ee2f10c0c6d273d4d7bf591a48068141e2c56" and "4d99690b89bda2814b78f01b88b7833296d47717" have entirely different histories.

2 changed files with 27 additions and 23 deletions

34
xC.c
View File

@ -4612,30 +4612,34 @@ log_formatter (struct app_context *ctx, struct buffer *buffer,
&& buffer->type == BUFFER_SERVER) && buffer->type == BUFFER_SERVER)
|| (ctx->current_buffer->type != BUFFER_GLOBAL || (ctx->current_buffer->type != BUFFER_GLOBAL
&& buffer == ctx->current_buffer->server->buffer)) && buffer == ctx->current_buffer->server->buffer))
can_leak = !ctx->isolate_buffers; can_leak = true;
bool leak_to_active = buffer != ctx->current_buffer && can_leak; relay_prepare_buffer_line (ctx, buffer, line,
relay_prepare_buffer_line (ctx, buffer, line, leak_to_active); buffer != ctx->current_buffer && !ctx->isolate_buffers && can_leak);
relay_broadcast (ctx); relay_broadcast (ctx);
bool visible = (buffer == ctx->current_buffer || leak_to_active) bool displayed = true;
&& ctx->terminal_suspended <= 0; if (ctx->terminal_suspended > 0)
// Another process is using the terminal
displayed = false;
else if (buffer == ctx->current_buffer)
buffer_line_display (ctx, buffer, line, false);
else if (!ctx->isolate_buffers && can_leak)
buffer_line_display (ctx, buffer, line, true);
else
displayed = false;
// Advance the unread marker but don't create a new one // Advance the unread marker in active buffers but don't create a new one
if (!visible || buffer->new_messages_count) if (!displayed
|| (buffer == ctx->current_buffer && buffer->new_messages_count))
{ {
buffer->new_messages_count++; buffer->new_messages_count++;
if ((flags & BUFFER_LINE_UNIMPORTANT) || leak_to_active) if (flags & BUFFER_LINE_UNIMPORTANT)
buffer->new_unimportant_count++; buffer->new_unimportant_count++;
}
if (visible)
buffer_line_display (ctx, buffer, line, leak_to_active);
else
{
buffer->highlighted |= important; buffer->highlighted |= important;
refresh_prompt (ctx);
} }
if (!displayed)
refresh_prompt (ctx);
} }
static void static void

View File

@ -288,7 +288,7 @@ rpcEventHandlers.set(Relay.Event.BufferLine, e => {
b.lines.push({...line}) b.lines.push({...line})
if (!(visible || e.leakToActive) || if (!(visible || e.leakToActive) ||
b.newMessages || b.newUnimportantMessages) { b.newMessages || b.newUnimportantMessages) {
if (line.isUnimportant || e.leakToActive) if (line.isUnimportant)
b.newUnimportantMessages++ b.newUnimportantMessages++
else else
b.newMessages++ b.newMessages++
@ -566,6 +566,12 @@ let Topic = {
} }
let Buffer = { let Buffer = {
controller: new AbortController(),
onbeforeremove: vnode => {
Buffer.controller.abort()
},
onupdate: vnode => { onupdate: vnode => {
if (bufferAutoscroll) if (bufferAutoscroll)
vnode.dom.scrollTop = vnode.dom.scrollHeight vnode.dom.scrollTop = vnode.dom.scrollHeight
@ -573,14 +579,8 @@ let Buffer = {
oncreate: vnode => { oncreate: vnode => {
Buffer.onupdate(vnode) Buffer.onupdate(vnode)
vnode.state.controller = new AbortController()
window.addEventListener('resize', event => Buffer.onupdate(vnode), window.addEventListener('resize', event => Buffer.onupdate(vnode),
{signal: vnode.state.controller.signal}) {signal: Buffer.controller.signal})
},
onremove: vnode => {
vnode.state.controller.abort()
}, },
view: vnode => { view: vnode => {