Closed Bug 1124108 Opened 10 years ago Closed 3 years ago

[meta] Support elastic overscroll (rubberbanding) on macOS

Categories

(Core :: Panning and Zooming, defect, P3)

All
macOS
defect

Tracking

()

VERIFIED FIXED
89 Branch

People

(Reporter: paul, Unassigned)

References

(Depends on 3 open bugs, Blocks 2 open bugs)

Details

(4 keywords, Whiteboard: [gfx-noted][mac:ux])

Attachments

(2 files)

B2G supports overscroll effects. I tried to enable this feature on osx (with apz.overscroll.enabled and layers.async-pan-zoom.enabled), but as soon as the scroll position reaches the top or the bottom of the window, the page freezes. Scrolling doesn't work anymore until the visibility of the page is toggled.
This is somewhere on my list but I haven't made a lot of progress on it yet.
When using B2G on Mac, overscroll appears to work with the B2G animation (stretching), but the stretch is not "released". The page stays stretched until the user scrolls again.
Whiteboard: [gfx-noted]
Comment 2 is still true in the latest OS X nightly. However "B2G on Mac" is probably not a relevant platform any more. I'll leave this open for now since we may still want to support overscroll on OS X.
Markus has a WIP patch for this and other related things, which I'm posting here for reference (originally posted in bug 1282245 comment 3).
Depends on: 1335958
Any progress on this now that APZ has landed in Firefox 57?
Any ideas about this? It's a key feature that would make Firefox on macOS much, much more attractive.
Sorry for the dupe :-( Updating this comment with some search words: Rubberband Rubber Band Rubber Banding Rubberbanding Elastic Scrolling Elasticscrolling
Summary: Support APZ overscroll on OSX → Support elastic overscroll (rubberbanding) on macOS
(In reply to Mart from comment #7) > Any ideas about this? It's a key feature that would make Firefox on macOS > much, much more attractive. Same here. Would like to bring this under the attention again. My only feature wish for Firefox on macOS is the rubber band scrolling and pinch/tap to zoom. Please make this happen! Happy to help where I can. :)
Flags: needinfo?(kats)
Flags: needinfo?(kats)

(In reply to Mart from comment #7)

Any ideas about this? It's a key feature that would make Firefox on macOS
much, much more attractive.

After some many months I'm still agree with you.
Just give Firefox a try after so many years on Chrome (in the past Firefox lover).
I want to say that Firefox is much faster and for devs as me, inspector is much better, like it.
Waiting in Firefox for what we like so much in MacOS, smooth and cool animation, like elastic overscroll.

Windows also uses elastic overscroll/rubberbanding.

It's crazy to think that this issue is 5 years old. Chrome will probably have it after Microsoft gets it right with their new Edge browser. Microsoft Edge UWP/Spartan/EdgeHTML and even IE have great scrolling. Chrome gets a lot right though and even has gestures (history navigation and pull to refresh) with both touchpads and touchscreens.

Is there a way to raise this issue in the bugtracker somehow? Like starring the bug or something? This issue makes Firefox feel very out of place on macOS, and I'm not sure why it's taking so long to implement given that literally every other application on macOS supports this. Shouldn't be hard to implement. This has been a problem for years and is a big reason I can't bring myself to use Firefox regularly.

Is there a way to raise this issue in the bugtracker somehow? Like starring the bug or something?

You can cast your vote at the top.

Although I vote here and there, I am not quite sure how much weight the votes have for decision making though tbh. Hope that helps.

If this feature does get implemented, at least add an option to disable it from Preferences. I abandoned Safari because I could not disable it there. The rubber banding is unsuitable for a multitude of web applications when it is applied to the entire page rather than individual scroll views. There have been companies that disabled rubber banding for their sites. Figma and Discord disabled rubber banding for the page as it makes no sense to have the entire page bounce on the edge when building a native app-like experience.

Windows also uses elastic overscroll/rubberbanding.

No, it does not. At least not in the browser.

There is a way for pages to disable it (the overscroll-behavior CSS property).

In terms of a user override, there will likely be an about:config pref.

(In reply to Geoffrei M. from comment #15)

Windows also uses elastic overscroll/rubberbanding.

No, it does not. At least not in the browser.

If you're using a laptop that supports the precision trackpad drivers, then yes, Windows does utilize elastic scrolling. Not sure if Firefox or Chrome on Windows does but Microsoft Edge does for sure.

(In reply to Botond Ballo [:botond] from comment #16)

There is a way for pages to disable it (the overscroll-behavior CSS property).

I mainly use overflow: none; on <body>, and I enable regular scrolling behavior using overflow: auto; when building a website. Although, If I use overflow: none using a StyleSheet extension on every page, most sites and apps break. It isn't the best solution. I will give the overscroll-behavior property a try and see if it works.

In terms of a user override, there will likely be an about:config pref.

Sounds good. As long as I can disable it, I have no problems if it is implemented.

(In reply to Ryan Johnson from comment #17)

If you're using a laptop that supports the precision trackpad drivers, then yes, Windows does utilize elastic scrolling. Not sure if Firefox or Chrome on Windows does but Microsoft Edge does for sure.

I had no idea. Thanks for the clarification.

(In reply to Ryan Johnson from comment #17)

(In reply to Geoffrei M. from comment #15)

Windows also uses elastic overscroll/rubberbanding.

No, it does not. At least not in the browser.

If you're using a laptop that supports the precision trackpad drivers, then yes, Windows does utilize elastic scrolling. Not sure if Firefox or Chrome on Windows does but Microsoft Edge does for sure.

Microsoft plans to add elastic overscroll to Chromium. There's already a flag. Microsoft and Google have improved scrolling in Chromium a lot. Microsoft also wants to add elastic overscroll to sub-frames like the UWP Edge. I rarely use Firefox as the scrolling is just hard to get used to. I've been waiting on direct manipulation support forever now :(

(In reply to Poopooracoocoo from comment #20)

(In reply to Ryan Johnson from comment #17)

(In reply to Geoffrei M. from comment #15)

Windows also uses elastic overscroll/rubberbanding.

No, it does not. At least not in the browser.

If you're using a laptop that supports the precision trackpad drivers, then yes, Windows does utilize elastic scrolling. Not sure if Firefox or Chrome on Windows does but Microsoft Edge does for sure.

Microsoft plans to add elastic overscroll to Chromium. There's already a flag. Microsoft and Google have improved scrolling in Chromium a lot. Microsoft also wants to add elastic overscroll to sub-frames like the UWP Edge. I rarely use Firefox as the scrolling is just hard to get used to. I've been waiting on direct manipulation support forever now :(

It's here, flip the pref apz.windows.use_direct_manipulation

holy cow!!! I think it's been 7 years! (In reply to Timothy Nikkel (:tnikkel) from comment #21)

(In reply to Poopooracoocoo from comment #20)

(In reply to Ryan Johnson from comment #17)

(In reply to Geoffrei M. from comment #15)

Windows also uses elastic overscroll/rubberbanding.

No, it does not. At least not in the browser.

If you're using a laptop that supports the precision trackpad drivers, then yes, Windows does utilize elastic scrolling. Not sure if Firefox or Chrome on Windows does but Microsoft Edge does for sure.

Microsoft plans to add elastic overscroll to Chromium. There's already a flag. Microsoft and Google have improved scrolling in Chromium a lot. Microsoft also wants to add elastic overscroll to sub-frames like the UWP Edge. I rarely use Firefox as the scrolling is just hard to get used to. I've been waiting on direct manipulation support forever now :(

It's here, flip the pref apz.windows.use_direct_manipulation

holy cow!!! it's been 7 years. No one commented on that issue so I didn't get an email. Thanks for telling me. I don't see that pref in version 77.0.1 (latest release). I do see apz.windows.force_disable_direct_manipulation which is true by default. It must be in Nightly, Dev or Beta then. How's the scrolling and zooming? Does pressing ctrl during inertial scrolling still zoom?

(In reply to Poopooracoocoo from comment #22)

holy cow!!! it's been 7 years. No one commented on that issue so I didn't get an email. Thanks for telling me. I don't see that pref in version 77.0.1 (latest release). I do see apz.windows.force_disable_direct_manipulation which is true by default. It must be in Nightly, Dev or Beta then. How's the scrolling and zooming? Does pressing ctrl during inertial scrolling still zoom?

It's only in nightly for now. If you want zooming too enabled apz.allow_zooming, you can test it out and if you have feedback let me know.

Maybe a new issue should be created for this problem? This one has been floating around for years with no progress.

(In reply to maximtsyba from comment #24)

Maybe a new issue should be created for this problem? This one has been floating around for years with no progress.

I'm sure the new issue would just be marked as a duplicate of this one with no other progress being made, unfortunately

Hardware: x86 → All

The Panning and Zooming team has not forgotten about overscroll. We have been prioritizing work on desktop zooming (bug 688990 and related), which is another widely requested feature, recently. I will advocate to make overscroll one of our next priorities after desktop zooming.

(In reply to Botond Ballo [:botond] from comment #27)

The Panning and Zooming team has not forgotten about overscroll. We have been prioritizing work on desktop zooming (bug 688990 and related), which is another widely requested feature, recently. I will advocate to make overscroll one of our next priorities after desktop zooming.

Very glad to hear! Keep it up!

As an update, now that bug 1620056 (zooming) has been closed as fixed, this might be looked at 👀 🤞
I wonder what happened to Markus Stange...

ah markus has been working of fenix's scrolling :) great work going on there! i don't remember why i said that in my previous comment as i've been following that bug lol

I'm currently working on this in and around classes/work. Currently figuring out how to translate between all the different coordinate systems, but I have a POC patch that just calls AsyncPanZoomController::GetOverscrollTransform and augments the async scroll delta by that amount. It works, but I'm definitely not doing the translation "properly," and scale may be slightly off because of that.

Just to clarify, I think this should just work on mac after it is fixed within apz since I don't see why it would follow any different codepath, but I'm doing implementation on Linux for this. There may be additional changes required for osx, but I'm not aware of any yet.

(In reply to Sawyer Bergeron from comment #32)

There may be additional changes required for osx, but I'm not aware of any yet.

On Mac, overscrolling to the left or the right can cause page navigation (backwards or forwards, respectively). We'll have to figure out how that would interact with a visual overscroll effect.

There may be additional changes required for osx, but I'm not aware of any yet.

Not sure if it's already part of the work, but we should respect system wide settings (NSScrollViewRubberbanding).

We did a user study for missing macOS features/most annoying bugs end of last year, and bouncy scrolling got a negative rank. That is, users said that they would prefer not to have this and that adding it would actively make their experience worse. Edit: Refreshing my memory, that's not an entirely fair characterization. Rather, when given the choice between this and literally every other feature/bugfix we could consider doing, users always chose the other feature/bugfix, potentially indicating they actively dislike this.

So I'm not saying stop developing this, but enabling it by default should probably not be done without consideration as this clearly isn't a very popular behavior.

That's really interesting. I assume that Windows users have the same opinion, although Windows users don't have a native scrolling personality yet. I wonder which features/bugs topped the ranks :D

Gin-Carlo, it would be nice if that list were made public for the sake of transparency. Which are the other features that are more urgent for macOS users? Literally every browser implements this. Overscroll is a sign that you are adjusting the platform. If not you are developing software that has its own custom UX patterns that deviate from the standard.

If there wasn't interest this bug wouldn't be 6 years old.

If there wasn't interest this bug wouldn't be 6 years old.

I don't think that the age of this issue is an indicator of public interest (as in a majority) of elastic overscrolling. The votes or how many people have been CCd, maybe. But it's still BMO, a hard to find place for other Firefox users. but im being semantic lol. yeah the list should be made public, or at least some parts of it.

(In reply to Gian-Carlo Pascutto [:gcp] from comment #35)

We did a user study for missing macOS features/most annoying bugs end of last year, and bouncy scrolling got a negative rank.

You know, the only reason I prefer Safari over Firefox on macOS is missing of this feature. Of course, I didn't participate in the survey. It would be nice to estimate amount of (potential) users like me.

when given the choice between this and literally every other feature/bugfix we could consider doing, users always chose the other feature/bugfix, potentially indicating they actively dislike this.

I would suggest that there is a real possibility that people for whom this feature is at least somewhat important or the lack of it is a blocker for them (e.g. me) simply don't actively use Firefox, so they haven't responded to your survey…

(In reply to Kuba Suder from comment #41)

when given the choice between this and literally every other feature/bugfix we could consider doing, users always chose the other feature/bugfix, potentially indicating they actively dislike this.

I would suggest that there is a real possibility that people for whom this feature is at least somewhat important or the lack of it is a blocker for them (e.g. me) simply don't actively use Firefox, so they haven't responded to your survey…

i fall into this camp. Ok it's not the biggest deal but i'm SOOOOO used to scrolling like this that it just feels broken in Firefox. It seems superficial but it actually does give the user some feedback. If I "fling" the page using the trackpad and it does an elastic "bounce" then I'm 100% sure it has hit the bottom or top. Whereas if it just stops suddenly in a dull fashion - that could mean the page simply stopped scrolling - my brain has no confirmation it's actually the bottom or top. Again I know this sounds really pedantic but when you consider some of us are using browsers 4-8 hours a day it's these little features (or lack of) that can matter. Does apple not provide a component that handles all of this? (not saying it's easy to implement though)

i'd also add that it's just nice having consistency across all the apps. Firefox is maybe the only app i use that doesn't follow this standard. I don't think it's tacky or bothersome... it's actually pretty tasteful and having that little elastic tween makes it feel like a smooth landing rather than a sudden crash. Just more pleasing I guess.

The feature is being worked on. You can follow bug 1605234 and its dependencies for progress.

I just thought I would chime in and say that I would really appreciate this to. Literally every single app I use on the Mac has this and it makes them feel very native to the system. Firefox just feels out of place without it. Not the end of the world, but it would be great if Firefox felt as natural as Safari, Chrome, or even Edge.

Whiteboard: [gfx-noted] → [gfx-noted][mac:ux]
Depends on: 1697679
Depends on: 1700169
Depends on: 1700215
Depends on: 1701077
Depends on: 1701699
Blocks: 1702973

I filed bug 1702988 which is an Overscroll issue. Thanks.

Keywords: meta
Summary: Support elastic overscroll (rubberbanding) on macOS → [meta] Support elastic overscroll (rubberbanding) on macOS
Depends on: 1709869
Depends on: 1710246

Overscroll seems to be implemented now. Firefox 89 on MacOS: overscrolling works on all pages, including about:preferences, etc.
Also works on Firefox Dev 90.

Issue 1605234 is still open but seems done. Nice work, somebody :)

Yep, I think we can close this as fixed in 89.

We'll keep bug 1605234 open to track releasing overscroll on other desktop platforms (Windows, Linux).

Status: NEW → RESOLVED
Closed: 3 years ago
Resolution: --- → FIXED
Target Milestone: --- → 89 Branch

Marking this as Verified > Fixed as this was tested under PI-984 ticket submitted to QA and signed-off with GREEN color.

Status: RESOLVED → VERIFIED

Oh my god. This is awful.

For anyone else who wants to disable this, go to about:config and set apz.overscroll.enabled to false.

You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: