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 .