From 8dcc769c50ab4cfb7c5b8f8f9b5bed3fd28801c2 Mon Sep 17 00:00:00 2001 From: cketti Date: Tue, 12 Mar 2013 07:54:38 +0100 Subject: [PATCH] Hack around WebView's initial auto-scrolling past the message header --- src/com/fsck/k9/view/MessageWebView.java | 26 ++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/com/fsck/k9/view/MessageWebView.java b/src/com/fsck/k9/view/MessageWebView.java index 26215646a..a1aee411f 100644 --- a/src/com/fsck/k9/view/MessageWebView.java +++ b/src/com/fsck/k9/view/MessageWebView.java @@ -46,6 +46,9 @@ public class MessageWebView extends TitleBarWebView { } + private int mOverrideScrollCounter; + + public MessageWebView(Context context) { super(context); } @@ -161,6 +164,7 @@ public class MessageWebView extends TitleBarWebView { + content; } loadDataWithBaseURL("http://", content, contentType, "utf-8", null); + mOverrideScrollCounter = 0; } /* @@ -180,4 +184,26 @@ public class MessageWebView extends TitleBarWebView { } } + @Override + public void scrollTo(int x, int y) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH && + mOverrideScrollCounter < 3) { + /* + * 2013-03-12 - cketti + * + * WebView on Android 4+ automatically scrolls past the title view using this method. + * It looks like user-triggered scroll operations don't call this method. So we use + * it to override the initial scrolling past the title view. + * + * It's a dirty hack and we should find a better way to display the message header. When + * testing this I saw up to two calls to this method during initialization. To make + * sure we don't totally cripple the WebView when the implementation changes we only + * override the first three scrollTo() invocations. + */ + y = 0; + mOverrideScrollCounter++; + } + + super.scrollTo(x, y); + } }