From e3963ca19b869d0b783ab3627f22e06ba654c9b4 Mon Sep 17 00:00:00 2001 From: Mark Anderson Date: Sun, 23 Mar 2014 22:29:41 +0000 Subject: [PATCH] Don't trigger immersive view when clicking a link --- .../src/com/newsblur/fragment/ReadingItemFragment.java | 7 ++++++- .../android/NewsBlur/src/com/newsblur/util/ViewUtils.java | 4 ++++ .../NewsBlur/src/com/newsblur/view/NewsblurWebview.java | 8 ++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/clients/android/NewsBlur/src/com/newsblur/fragment/ReadingItemFragment.java b/clients/android/NewsBlur/src/com/newsblur/fragment/ReadingItemFragment.java index e8f8d555c..98328a2ef 100644 --- a/clients/android/NewsBlur/src/com/newsblur/fragment/ReadingItemFragment.java +++ b/clients/android/NewsBlur/src/com/newsblur/fragment/ReadingItemFragment.java @@ -563,7 +563,12 @@ public class ReadingItemFragment extends Fragment implements ClassifierDialogFra @Override public boolean onSingleTapUp(MotionEvent e) { - if ((view.getSystemUiVisibility() & View.SYSTEM_UI_FLAG_IMMERSIVE) != 0) { + if (web.wasLinkClicked()) { + // Clicked a link so ignore immersive view + return super.onSingleTapUp(e); + } + + if (ViewUtils.isSystemUIHidden(view)) { ViewUtils.showSystemUI(view); } else { ViewUtils.hideSystemUI(view); diff --git a/clients/android/NewsBlur/src/com/newsblur/util/ViewUtils.java b/clients/android/NewsBlur/src/com/newsblur/util/ViewUtils.java index 2def54e04..16e486ca1 100644 --- a/clients/android/NewsBlur/src/com/newsblur/util/ViewUtils.java +++ b/clients/android/NewsBlur/src/com/newsblur/util/ViewUtils.java @@ -142,4 +142,8 @@ public class ViewUtils { | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_IMMERSIVE); } + + public static boolean isSystemUIHidden(View view) { + return (view.getSystemUiVisibility() & View.SYSTEM_UI_FLAG_IMMERSIVE) != 0; + } } diff --git a/clients/android/NewsBlur/src/com/newsblur/view/NewsblurWebview.java b/clients/android/NewsBlur/src/com/newsblur/view/NewsblurWebview.java index 89c1feb74..eac78a30e 100644 --- a/clients/android/NewsBlur/src/com/newsblur/view/NewsblurWebview.java +++ b/clients/android/NewsBlur/src/com/newsblur/view/NewsblurWebview.java @@ -67,4 +67,12 @@ public class NewsblurWebview extends WebView { loadUrl(script); } } + + /** + * http://stackoverflow.com/questions/5994066/webview-ontouch-handling-when-the-user-does-not-click-a-link + */ + public boolean wasLinkClicked() { + WebView.HitTestResult result = getHitTestResult(); + return (result != null && result.getExtra() != null); + } }