Comment 128 for bug 1228250

Revision history for this message
In , R-bugs-h (r-bugs-h) wrote :

Comment on attachment 8915954
Bug 143038 Make users can scroll contents horizontally with vertical wheel operation with a modifier

https://reviewboard.mozilla.org/r/186794/#review195394

::: browser/app/profile/firefox.js:639
(Diff revision 4)
> -pref("mousewheel.with_shift.action", 2);
> +// only vertical wheel but want to scroll horizontally. For such users, we
> +// should provide horizontal scroll with shift+wheel (same as Chrome).
> +// However, shift+wheel was used for navigating history. For users who want
> +// to keep using this feature, let's enable it with alt+wheel. This is better
> +// for consistency with macOS users.
> +pref("mousewheel.with_shift.action", 4);

ok, this is of course a change to the default behavior, but we do have some time to get feedback

::: dom/events/EventStateManager.cpp:3298
(Diff revision 4)
> - // When APZ is enabled, the actual scroll animation might be handled by
> - // the compositor.
> - WheelPrefs::Action action;
> if (pluginFrame) {
> MOZ_ASSERT(pluginFrame->WantsToHandleWheelEventAsDefaultAction());
> action = WheelPrefs::ACTION_SEND_TO_PLUGIN;

You change the ordering of whether action is first checked for plugin or apz, and delta is adjusted before the plugin chcek. But I guess that makes sense. But please test (manually) some Flash doing scrolling.

::: dom/events/EventStateManager.cpp:5915
(Diff revision 4)
>
> - *aOutMultiplierX = mMultiplierX[index];
> - *aOutMultiplierY = mMultiplierY[index];
> + // If the event should be treated as horizontal wheel operation, deltaY
> + // should be multiplied by mMultiplierY, however, it might be moved to
> + // deltaX for handling default action. In such case, we need to treat
> + // mMultiplierX and mMultiplierY as swapped.
> + double multiplierForDeltaX = mMultiplierX[index];

We do have this similar code in several places.
Can you think of anyway to have a helper method to do this all? If not, fine.

::: dom/events/WheelHandlingHelper.h:233
(Diff revision 4)
> + WidgetWheelEvent& mWheelEvent;
> + double mOldDeltaX;
> + double mOldDeltaZ;
> + double mOldOverflowDeltaX;
> + int32_t mOldLineOrPageDeltaX;
> + bool mTreatedVertualWheelAsHorizontalScroll;

Vertually? Do you mean Virtually