ID:2270563
 
BYOND Version:511
Operating System:Windows 10 Home
Web Browser:Google Chrome
Applies to:Webclient
Status: Open

Issue hasn't been assigned a status value.
Descriptive Problem Summary:

When using a Tab control to nest output windows, it does something to make it so that output stops scrolling automatically when new output is recieved.

Output scrolls fine until the tab is changed to a different tab. Once the tab is changed, it seems impossible to restore the output to default functionality and the window just stops scrolling altogether.

Numbered Steps to Reproduce Problem:

DEMO (8kb): https://www.sendspace.com/file/xnvtau

Code Snippet (if applicable) to Reproduce Problem:
    verb/formatoutput()
src << output("<b>ALPHA WINDOW</b>: This message should is only visible in the Alpha output window. This output window should automatically scroll","output_chat1")
src << output("<b>BETA WINDOW</b>: This message should is only visible in the Beta output window. This output window should automatically scroll","output_chat2")
verb/formatstandard()
src << "<b>STANDARD</b>: This message should is only visible in the default output window (currently defined as Alpha in the .dmf). This output window should automatically scroll"


Expected Results:
The output window automatically scrolls when new output is recieved

Actual Results:
The output window scrolls correctly, until the tab control is invoked by the user. Once the tab is changed, the scroll functionality seems to break with no way to restore it to default functionality other than to reset the client. Dream Seeker does not do this.

EDIT: I'm starting to experience the problem without even changing tabs, so this issue might not have anything to do with tabs in general.


Workarounds:
Still trying to find one
edited post to clarify that i am starting to experience this problem without even changing tabs, so this problem might not have anything to do with tabs after all. i will keep that information included anyways to hopefully find the cause of this bug.
Still haven't been able to construct any workaround to this issue.
i'm scanning output.dms and the timer for 'autoscroll' which is supposed to give the browser time to update seems really small, could this maybe be the cause of the glitch?

        _autoScroll: function(sub,go) {
var t=this,cf=t.config,c=cf._pendingScroll,ps=c[sub],e=t.top;
if(!go) return ps;
if(ps) clearTimeout(ps);
// scroll now
e.scrollTop = Math.max(0, e.scrollHeight-byond.innerSize(e).height);
cf._atBottom = true;
c[sub] = 0;
// if not responding to a timer already, do a small timeout and try again later
if(go !== 2) c[sub] = setTimeout(t._autoScroll.bind(t,sub,2), 250);
},
This is not an issue with weblcient alone, its an issue with ds aswell, and has been for many years.
at the very least, then, i'd like a command to manually force the output to scroll to the bottom instead of waiting for byond to do it automatically
like some kind of winset that internally just gets recognized as a command to force it to scroll to bottom

like
output.scroll-to-bottom=true; being the command

i don't really know why output text protocols can be having this kind of scrolling issue tbh.

all I know is what I posted in the OP, the demo works fine on dreamseeker but bugs out in webclient.

as someone who makes text games that get subs, a glitch like this is really a big deal. i have to find a way to fix it.