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

Commit 91fc3cf3 authored by Chet Haase's avatar Chet Haase
Browse files

Fix artifact with clipped webview content

We were incorrectly calculating the webview viewport in cases
where the viewport was clipped. We now pass down null for the
viewport, which is an indicator for the native code to noop
drawGL calls with a null viewport.

Change-Id: Iecf191eb447869819e357a15a360f0f08c47c273
parent 270cbcc1
Loading
Loading
Loading
Loading
+18 −11
Original line number Diff line number Diff line
@@ -350,6 +350,7 @@ public class WebView extends AbsoluteLayout
    private ZoomManager mZoomManager;

    private Rect mGLRectViewport = new Rect();
    private boolean mGLViewportEmpty = false;

    /**
     *  Transportation object for returning WebView across thread boundaries.
@@ -4071,7 +4072,8 @@ public class WebView extends AbsoluteLayout
        }

        if (canvas.isHardwareAccelerated()) {
            int functor = nativeGetDrawGLFunction(mGLRectViewport, getScale(), extras);
            int functor = nativeGetDrawGLFunction(mGLViewportEmpty ? null : mGLRectViewport,
                    getScale(), extras);
            ((HardwareCanvas) canvas).callDrawGLFunction(functor);
        } else {
            DrawFilter df = null;
@@ -5155,16 +5157,21 @@ public class WebView extends AbsoluteLayout

    void setGLRectViewport() {
        // Use the getGlobalVisibleRect() to get the intersection among the parents
        getGlobalVisibleRect(mGLRectViewport);

        // visible == false means we're clipped - send a null rect down to indicate that
        // we should not draw
        boolean visible = getGlobalVisibleRect(mGLRectViewport);
        if (visible) {
            // Then need to invert the Y axis, just for GL
            View rootView = getRootView();
            int rootViewHeight = rootView.getHeight();
            int savedWebViewBottom = mGLRectViewport.bottom;
            mGLRectViewport.bottom = rootViewHeight - mGLRectViewport.top - getVisibleTitleHeight();
            mGLRectViewport.top = rootViewHeight - savedWebViewBottom;

        nativeUpdateDrawGLFunction(mGLRectViewport);
            mGLViewportEmpty = false;
        } else {
            mGLViewportEmpty = true;
        }
        nativeUpdateDrawGLFunction(mGLViewportEmpty ? null : mGLRectViewport);
    }

    /**