This was previously submitted as an issue in: https://github.com/hexchat/hexchat/issues/1948
Maybe it isn't the ideal way to solve it, but at least I tested it and it seems to work.
dontscroll (buf); /* force scrolling off */
xtext->adj->value = buf->old_value;
xtext->adj->upper = buf->num_lines;
+
+ /* if the scrollbar was down, keep it down */
+ if (xtext->buffer->scrollbar_down && xtext->adj->value <
+ xtext->adj->upper - xtext->adj->page_size)
+ {
+ xtext->adj->value = xtext->adj->upper - xtext->adj->page_size;
+ }
+
if (xtext->adj->upper == 0)
xtext->adj->upper = 1;
/* sanity check */