Compare commits
2 Commits
4d99690b89
...
941ee2f10c
Author | SHA1 | Date | |
---|---|---|---|
941ee2f10c | |||
5b57e9b41b |
34
xC.c
34
xC.c
@ -4612,34 +4612,30 @@ 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 = true;
|
can_leak = !ctx->isolate_buffers;
|
||||||
|
|
||||||
relay_prepare_buffer_line (ctx, buffer, line,
|
bool leak_to_active = buffer != ctx->current_buffer && can_leak;
|
||||||
buffer != ctx->current_buffer && !ctx->isolate_buffers && can_leak);
|
relay_prepare_buffer_line (ctx, buffer, line, leak_to_active);
|
||||||
relay_broadcast (ctx);
|
relay_broadcast (ctx);
|
||||||
|
|
||||||
bool displayed = true;
|
bool visible = (buffer == ctx->current_buffer || leak_to_active)
|
||||||
if (ctx->terminal_suspended > 0)
|
&& 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 in active buffers but don't create a new one
|
// Advance the unread marker but don't create a new one
|
||||||
if (!displayed
|
if (!visible || buffer->new_messages_count)
|
||||||
|| (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) || leak_to_active)
|
||||||
buffer->new_unimportant_count++;
|
buffer->new_unimportant_count++;
|
||||||
buffer->highlighted |= important;
|
|
||||||
}
|
}
|
||||||
if (!displayed)
|
|
||||||
|
if (visible)
|
||||||
|
buffer_line_display (ctx, buffer, line, leak_to_active);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
buffer->highlighted |= important;
|
||||||
refresh_prompt (ctx);
|
refresh_prompt (ctx);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -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)
|
if (line.isUnimportant || e.leakToActive)
|
||||||
b.newUnimportantMessages++
|
b.newUnimportantMessages++
|
||||||
else
|
else
|
||||||
b.newMessages++
|
b.newMessages++
|
||||||
@ -566,12 +566,6 @@ 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
|
||||||
@ -579,8 +573,14 @@ 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: Buffer.controller.signal})
|
{signal: vnode.state.controller.signal})
|
||||||
|
},
|
||||||
|
|
||||||
|
onremove: vnode => {
|
||||||
|
vnode.state.controller.abort()
|
||||||
},
|
},
|
||||||
|
|
||||||
view: vnode => {
|
view: vnode => {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user