roost-im / roost-client

The official client for Roost.
MIT License
1 stars 6 forks source link

Do we want autoscroll? #81

Open dovej opened 10 years ago

dovej commented 10 years ago

Do we want to add some form of autoscroll? I believe Zulip has this. The idea is that under some circumstance we might want new incoming messages to automatically scroll a pane downwards, that way you don't have to manually scroll to keep up with active real-time conversation. We'd have to be very careful about how to trigger this though, as it has a lot of potential to be undesired. In particular, it should not be triggered if the user is not at the bottom obviously, but more importantly it should not be triggered if the window is not in focus. Whether or not we care if the pane in question is selected is another issue. I suspect we do, i.e. it should not be triggered unless the pane is selected. (Think about having a conversation in your PM page, meanwhile your all messages pane is autoscrolling without you paying attention.) And so on.

cesium12 commented 10 years ago

Even if the window is focused, what's the chance the user isn't actually looking at it? If you're composing a message, do you want to scroll to see new conversation, or to keep looking at the message you're responding to? Note that it's hard to recover from an unwanted scroll, but easy to press End yourself.

(Separately, there may be some value in a per-pane "follow" setting so if you just caught up completely in your home filter, you don't then need to also scroll all the other filters that are just subsets of that.)

On Tuesday, July 8, 2014, Justin Dove notifications@github.com wrote:

Do we want to add some form of autoscroll? I believe Zulip has this. The idea is that under some circumstance we might want new incoming messages to automatically scroll a pane downwards, that way you don't have to manually scroll to keep up with active real-time conversation. We'd have to be very careful about how to trigger this though, as it has a lot of potential to be undesired. In particular, it should not be triggered if the user is not at the bottom obviously, but more importantly it should not be triggered if the window is not in focus. Whether or not we care if the pane in question is selected is another issue. I suspect we do, i.e. it should not be triggered unless the pane is selected. (Think about having a conversation in your PM page, meanwhile your all messages pane is autoscrolling without you paying attention.) And so on.

— Reply to this email directly or view it on GitHub https://github.com/roost-im/roost-client/issues/81.

~132.905~

jrafidi commented 10 years ago

Perhaps an "Autoscroll" checkbox near the "Bottom" button in the pane would solve this problem. Sounds like a cop out to shunt it onto the user, but the number of use cases are significantly varied. Given use cases stretching to window focus, I don't think we can easily build an auto-detection system that will be up to our standards.

I also think autoscroll should only trigger if the bottom filler area is in view. This means the user is scrolled to the bottom (or somewhere close). It might be instinct to say that they should be all the way at the very very bottom of the pane, but I think that can get really annoying if you're slightly scrolled without knowing it, causing autoscroll to stop. Or perhaps you should just be within a certain range of the bottom.

Point is: if autoscroll is on, I think it should only happen if the message that caused the scroll jump is visible.

jrafidi commented 10 years ago

bump

dovej commented 10 years ago

If we do incorporate an autoscroll at all, I think that it must not trigger unless at least the following conditions are met: 1) the bottom is visible, 2) the window is in focus. I might even go so far as saying 3) the pane should be selected, but I'm less adamant about that. In general, I agree with cesium that scroll is a difficult thing to undo in zephyr and can really fuck you up, so I think jrafidi's suggestion of some sort of user-controllable, per-pane option is a good idea. Nevertheless, it's still important we have certain good heuristics like (1) and (2) even when the option is selected, lest the user be forced to constantly check and uncheck the box so frequently that they abandon the feature altogether.