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

Commit c948d07b authored by Teng-Hui Zhu's avatar Teng-Hui Zhu Committed by Android (Google) Code Review
Browse files

Merge "Webview listen to Scroll event to update the viewport"

parents f69583cd 5513337a
Loading
Loading
Loading
Loading
+30 −7
Original line number Diff line number Diff line
@@ -322,8 +322,19 @@ public class WebView extends AbsoluteLayout
        }
    }

    private class InnerScrollChangedListener implements ViewTreeObserver.OnScrollChangedListener {
        public void onScrollChanged() {
            if (isShown()) {
                setGLRectViewport();
            }
        }
    }

    // The listener to capture global layout change event.
    private InnerGlobalLayoutListener mListener = null;
    private InnerGlobalLayoutListener mGlobalLayoutListener = null;

    // The listener to capture scroll event.
    private InnerScrollChangedListener mScrollChangedListener = null;

    // if AUTO_REDRAW_HACK is true, then the CALL key will toggle redrawing
    // the screen all-the-time. Good for profiling our drawing code
@@ -4746,9 +4757,15 @@ public class WebView extends AbsoluteLayout
        super.onAttachedToWindow();
        if (hasWindowFocus()) setActive(true);
        final ViewTreeObserver treeObserver = getViewTreeObserver();
        if (treeObserver != null && mListener == null) {
            mListener = new InnerGlobalLayoutListener();
            treeObserver.addOnGlobalLayoutListener(mListener);
        if (treeObserver != null) {
            if (mGlobalLayoutListener == null) {
                mGlobalLayoutListener = new InnerGlobalLayoutListener();
                treeObserver.addOnGlobalLayoutListener(mGlobalLayoutListener);
            }
            if (mScrollChangedListener == null) {
                mScrollChangedListener = new InnerScrollChangedListener();
                treeObserver.addOnScrollChangedListener(mScrollChangedListener);
            }
        }
    }

@@ -4759,9 +4776,15 @@ public class WebView extends AbsoluteLayout
        if (hasWindowFocus()) setActive(false);

        final ViewTreeObserver treeObserver = getViewTreeObserver();
        if (treeObserver != null && mListener != null) {
            treeObserver.removeGlobalOnLayoutListener(mListener);
            mListener = null;
        if (treeObserver != null) {
            if (mGlobalLayoutListener != null) {
                treeObserver.removeGlobalOnLayoutListener(mGlobalLayoutListener);
                mGlobalLayoutListener = null;
            }
            if (mScrollChangedListener != null) {
                treeObserver.removeOnScrollChangedListener(mScrollChangedListener);
                mScrollChangedListener = null;
            }
        }

        super.onDetachedFromWindow();