Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 50b1034d authored by Shimeng (Simon) Wang's avatar Shimeng (Simon) Wang
Browse files

Pass whether a scroll is user-scrolled or not to webkit.

This is to eliminate false scrollEvent to webkit.  And the side effect
is that the history scroll position will be correctly restored;
otherwise, webkit think there's user scrolled and not send back history
scroll position.

Particulary for NEW_PICTURE_MSG from webkit, the scroll event because of
it are not user-scrolled.

issue: 3063945
Change-Id: I9fdbfcb8baf07baf2331e2c4eed66f88aea744ef
parent f8ca2d71
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -2388,7 +2388,7 @@ public class WebView extends AbsoluteLayout
        if (!rect.equals(mLastVisibleRectSent)) {
            Point pos = new Point(rect.left, rect.top);
            mWebViewCore.sendMessage(EventHub.SET_SCROLL_OFFSET,
                    nativeMoveGeneration(), 0, pos);
                    nativeMoveGeneration(), mUserScroll ? 1 : 0, pos);
            mLastVisibleRectSent = rect;
        }
        Rect globalRect = new Rect();
@@ -6444,6 +6444,7 @@ public class WebView extends AbsoluteLayout
                }
                case NEW_PICTURE_MSG_ID: {
                    // called for new content
                    mUserScroll = false;
                    final WebViewCore.DrawData draw = (WebViewCore.DrawData) msg.obj;
                    setBaseLayer(draw.mBaseLayer, draw.mInvalRegion.getBounds());
                    final Point viewSize = draw.mViewPoint;
+2 −2
Original line number Diff line number Diff line
@@ -1074,7 +1074,7 @@ final class WebViewCore {
                            // note: these are in document coordinates
                            // (inv-zoom)
                            Point pt = (Point) msg.obj;
                            nativeSetScrollOffset(msg.arg1, pt.x, pt.y);
                            nativeSetScrollOffset(msg.arg1, msg.arg2, pt.x, pt.y);
                            break;

                        case SET_GLOBAL_BOUNDS:
@@ -2347,7 +2347,7 @@ final class WebViewCore {
    private native void nativeScrollFocusedTextInput(float xPercent, int y);

    // these must be in document space (i.e. not scaled/zoomed).
    private native void nativeSetScrollOffset(int gen, int dx, int dy);
    private native void nativeSetScrollOffset(int gen, int userScrolled, int dx, int dy);

    private native void nativeSetGlobalBounds(int x, int y, int w, int h);