summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2013-11-21 12:15:53 +0400
committerAndrew Dolgov <[email protected]>2013-11-21 12:15:53 +0400
commit2d6b858726bf5a5fbb79c133f0b9074bb2894d95 (patch)
tree2e3108181af7ead80ec56076a9ef39d6e542dcfb /src
parente6295be411aa4233de0db4e7a9e0515621d25a1a (diff)
allow text selection while keeping image context menus
Diffstat (limited to 'src')
-rw-r--r--src/org/fox/ttrss/ArticleFragment.java34
-rw-r--r--src/org/fox/ttrss/offline/OfflineArticleFragment.java30
2 files changed, 53 insertions, 11 deletions
diff --git a/src/org/fox/ttrss/ArticleFragment.java b/src/org/fox/ttrss/ArticleFragment.java
index 9cca02c6..6f87d84d 100644
--- a/src/org/fox/ttrss/ArticleFragment.java
+++ b/src/org/fox/ttrss/ArticleFragment.java
@@ -1,5 +1,6 @@
package org.fox.ttrss;
+import java.lang.reflect.Method;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URL;
@@ -29,6 +30,7 @@ import android.util.TypedValue;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.GestureDetector;
+import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
@@ -160,10 +162,30 @@ public class ArticleFragment extends Fragment {
}
}
- WebView web = (WebView)view.findViewById(R.id.content);
+ final WebView web = (WebView)view.findViewById(R.id.content);
if (web != null) {
- registerForContextMenu(web);
+
+ web.setOnLongClickListener(new View.OnLongClickListener() {
+ @Override
+ public boolean onLongClick(View v) {
+ HitTestResult result = ((WebView)v).getHitTestResult();
+
+ if (result != null && (result.getType() == HitTestResult.IMAGE_TYPE || result.getType() == HitTestResult.SRC_IMAGE_ANCHOR_TYPE)) {
+ registerForContextMenu(web);
+ m_activity.openContextMenu(web);
+ unregisterForContextMenu(web);
+ return true;
+ } else {
+ if (m_activity.isCompatMode()) {
+ KeyEvent shiftPressEvent = new KeyEvent(0, 0, KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_SHIFT_LEFT, 0, 0);
+ shiftPressEvent.dispatch(web);
+ }
+
+ return false;
+ }
+ }
+ });
// prevent flicker in ics
if (!m_prefs.getBoolean("webview_hardware_accel", true) || useTitleWebView) {
@@ -232,10 +254,10 @@ public class ArticleFragment extends Fragment {
articleContent = doc.toString();
}
-
- String align = m_prefs.getBoolean("justify_article_text", true) ? "text-align : justify;" : "";
-
- cssOverride += "body { "+align+" } ";
+
+ if (m_prefs.getBoolean("justify_article_text", true)) {
+ cssOverride += "body { text-align : justify; } ";
+ }
switch (Integer.parseInt(m_prefs.getString("font_size", "0"))) {
case 0:
diff --git a/src/org/fox/ttrss/offline/OfflineArticleFragment.java b/src/org/fox/ttrss/offline/OfflineArticleFragment.java
index a35982d0..ad148257 100644
--- a/src/org/fox/ttrss/offline/OfflineArticleFragment.java
+++ b/src/org/fox/ttrss/offline/OfflineArticleFragment.java
@@ -30,6 +30,7 @@ import android.util.TypedValue;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.GestureDetector;
+import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.MotionEvent;
@@ -174,11 +175,30 @@ public class OfflineArticleFragment extends Fragment {
comments.setVisibility(View.GONE);
}
- WebView web = (WebView)view.findViewById(R.id.content);
+ final WebView web = (WebView)view.findViewById(R.id.content);
if (web != null) {
- registerForContextMenu(web);
+ web.setOnLongClickListener(new View.OnLongClickListener() {
+ @Override
+ public boolean onLongClick(View v) {
+ HitTestResult result = ((WebView)v).getHitTestResult();
+
+ if (result != null && (result.getType() == HitTestResult.IMAGE_TYPE || result.getType() == HitTestResult.SRC_IMAGE_ANCHOR_TYPE)) {
+ registerForContextMenu(web);
+ m_activity.openContextMenu(web);
+ unregisterForContextMenu(web);
+ return true;
+ } else {
+ if (m_activity.isCompatMode()) {
+ KeyEvent shiftPressEvent = new KeyEvent(0, 0, KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_SHIFT_LEFT, 0, 0);
+ shiftPressEvent.dispatch(web);
+ }
+
+ return false;
+ }
+ }
+ });
web.setWebChromeClient(new WebChromeClient() {
@Override
@@ -260,9 +280,9 @@ public class OfflineArticleFragment extends Fragment {
articleContent = doc.toString();
}
- String align = m_prefs.getBoolean("justify_article_text", true) ? "text-align : justified" : "";
-
- cssOverride += "body { "+align+" } ";
+ if (m_prefs.getBoolean("justify_article_text", true)) {
+ cssOverride += "body { text-align : justify; } ";
+ }
switch (Integer.parseInt(m_prefs.getString("font_size", "0"))) {
case 0: