Subj : frame.js scrollbars
To : echicken
From : Nightfox
Date : Wed Nov 25 2015 08:38 pm
Re: frame.js scrollbars
By: echicken to Nightfox on Wed Nov 25 2015 22:56:55
>> I was using LIGHTGRAY. I tried BG_LIGHTGRAY just now, and I think it
>> actually looks/behaves better with LIGHTGRAY.
ec> Only the BG_* values in sbbsdefs.js should be used for background colours;
ec> using the others may result in strange-looking things.
ec> LIGHTGRAY incidentally looks better as a background here because - since
ec> WHITE is your foreground - it's like not setting a background colour at
ec> all. The foreground and background colours are OR-ed together to make an
ec> attribute number. In this case you end up with WHITE|LIGHTGRAY, which is
ec> 15|7, which is 15, which is WHITE. (You should see the same result when
ec> using any other non-BG_* colour as your background, so long as WHITE is
ec> your foreground.)
Ah, I see. Perhaps I'll end up changing my script a bit to make things more
the way they're supposed to be then.
>> The ANSI content is being loaded before the scrollbar & frame are
>> opened for the first time. Should it be loaded after?
ec> Not sure - I was just curious. How are you loading the ANSI stuff into the
ec> Frame - using Frame.load(), or some other way (Frame.putmsg(), etc.)?
I'm using Frame.load() to load an ANSI file.
>> Ah, that seems to help. So it seems that the documentation (comments)
>> in scrollbar.js are wrong -
ec> Not really. The example works, but there's a crucial difference between it
ec> and what you're doing. (Which isn't to say that your way is wrong.)
>> if(f.cycle()) {
>> s.cycle();
>> console.gotoxy(console.screen_columns, console.screen_rows);
>> }
>> That seems to suggest that if the frame cycle succeeds, then cycle the
>> scrollbar. But as you suggested, it seems to work better when the
>> scrollbar's cycle() is called before the frame's cycle().
ec> Frame.cycle() returns true if something changed, false otherwise. In my
ec> example, I'm only updating the ScrollBar if something changed in the Frame
ec> it's attached to. However changes to the ScrollBar's position won't be
ec> displayed until the Frame is cycled again. In my example, that next
ec> Frame.cycle() happens right away. In your code, there's presumably a
ec> blocking input prompt (console.getkey perhaps) in between.
Ah, I see. I suppose that is a little different from what I am doing.
ec> The best solution would be for me to just bring ScrollBar into frame.js,
ec> and tie it into the Frame.cycle() method. Then you would use those
ec> currently-placeholder properties of Frame to enable scrollbars, and the
ec> rest would work behind the scenes - no need to manage the scrollbars
ec> separately.
Would that break existing scripts that are currently managing them separately?
Nightfox
---
� Synchronet � Digital Distortion: digitaldistortionbbs.com