From 6b1df6b47d38bf2b04ddbc3365208f40b8726b6b Mon Sep 17 00:00:00 2001
From: Janne Koschinski <janne@kuschku.de>
Date: Tue, 27 Mar 2018 23:53:11 +0200
Subject: [PATCH] Attempt at finally fixing ripple, selection and link
 interaction

---
 .../ui/chat/messages/MessageAdapter.kt        |  3 ---
 .../messages/RipplePassthroughTextView.kt     | 19 +++++++++++++++++++
 .../res/layout/widget_chatmessage_action.xml  |  2 +-
 .../layout/widget_chatmessage_daychange.xml   |  2 +-
 .../res/layout/widget_chatmessage_error.xml   |  2 +-
 .../res/layout/widget_chatmessage_info.xml    |  2 +-
 .../res/layout/widget_chatmessage_notice.xml  |  2 +-
 .../res/layout/widget_chatmessage_plain.xml   |  2 +-
 .../res/layout/widget_chatmessage_server.xml  |  2 +-
 9 files changed, 26 insertions(+), 10 deletions(-)
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/RipplePassthroughTextView.kt

diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageAdapter.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageAdapter.kt
index b9086710f..4e84989f2 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageAdapter.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageAdapter.kt
@@ -141,10 +141,7 @@ class MessageAdapter(
       content.movementMethod = BetterLinkMovementMethod.getInstance()
 
       itemView.setOnClickListener(localClickListener)
-      content.setOnClickListener(localClickListener)
-
       itemView.setOnLongClickListener(localLongClickListener)
-      content.setOnLongClickListener(localLongClickListener)
     }
 
     fun bind(message: FormattedMessage, selectable: Boolean = true, clickable: Boolean = true) {
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/RipplePassthroughTextView.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/RipplePassthroughTextView.kt
new file mode 100644
index 000000000..ad20d238d
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/RipplePassthroughTextView.kt
@@ -0,0 +1,19 @@
+package de.kuschku.quasseldroid.ui.chat.messages
+
+import android.content.Context
+import android.text.Spannable
+import android.util.AttributeSet
+import android.view.MotionEvent
+import android.widget.TextView
+
+class RipplePassthroughTextView : TextView {
+  constructor(context: Context?) : super(context)
+  constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs)
+  constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) :
+    super(context, attrs, defStyleAttr)
+
+  override fun onTouchEvent(event: MotionEvent?): Boolean {
+    super.onTouchEvent(event)
+    return movementMethod?.onTouchEvent(this, text as? Spannable, event) == true
+  }
+}
\ No newline at end of file
diff --git a/app/src/main/res/layout/widget_chatmessage_action.xml b/app/src/main/res/layout/widget_chatmessage_action.xml
index 3cb90f5c9..ae14d6500 100644
--- a/app/src/main/res/layout/widget_chatmessage_action.xml
+++ b/app/src/main/res/layout/widget_chatmessage_action.xml
@@ -28,7 +28,7 @@
       android:typeface="monospace"
       tools:text="@sample/messages.json/data/time" />
 
-    <TextView
+    <de.kuschku.quasseldroid.ui.chat.messages.RipplePassthroughTextView
       android:id="@+id/content"
       android:layout_width="0dip"
       android:layout_height="wrap_content"
diff --git a/app/src/main/res/layout/widget_chatmessage_daychange.xml b/app/src/main/res/layout/widget_chatmessage_daychange.xml
index 9b5338654..03f99f78d 100644
--- a/app/src/main/res/layout/widget_chatmessage_daychange.xml
+++ b/app/src/main/res/layout/widget_chatmessage_daychange.xml
@@ -23,7 +23,7 @@
     android:paddingStart="@dimen/message_horizontal"
     android:paddingTop="@dimen/message_vertical">
 
-    <TextView
+    <de.kuschku.quasseldroid.ui.chat.messages.RipplePassthroughTextView
       android:id="@+id/content"
       android:layout_width="0dip"
       android:layout_height="wrap_content"
diff --git a/app/src/main/res/layout/widget_chatmessage_error.xml b/app/src/main/res/layout/widget_chatmessage_error.xml
index d1f1e2ec3..2e84f028b 100644
--- a/app/src/main/res/layout/widget_chatmessage_error.xml
+++ b/app/src/main/res/layout/widget_chatmessage_error.xml
@@ -28,7 +28,7 @@
       android:typeface="monospace"
       tools:text="@sample/messages.json/data/time" />
 
-    <TextView
+    <de.kuschku.quasseldroid.ui.chat.messages.RipplePassthroughTextView
       android:id="@+id/content"
       android:layout_width="0dip"
       android:layout_height="wrap_content"
diff --git a/app/src/main/res/layout/widget_chatmessage_info.xml b/app/src/main/res/layout/widget_chatmessage_info.xml
index 42182a387..37e93194d 100644
--- a/app/src/main/res/layout/widget_chatmessage_info.xml
+++ b/app/src/main/res/layout/widget_chatmessage_info.xml
@@ -28,7 +28,7 @@
       android:textColor="?attr/colorForegroundSecondary"
       tools:text="@sample/messages.json/data/time" />
 
-    <TextView
+    <de.kuschku.quasseldroid.ui.chat.messages.RipplePassthroughTextView
       android:id="@+id/content"
       android:layout_width="0dip"
       android:layout_height="wrap_content"
diff --git a/app/src/main/res/layout/widget_chatmessage_notice.xml b/app/src/main/res/layout/widget_chatmessage_notice.xml
index 87979a516..cc958e534 100644
--- a/app/src/main/res/layout/widget_chatmessage_notice.xml
+++ b/app/src/main/res/layout/widget_chatmessage_notice.xml
@@ -28,7 +28,7 @@
       android:textColor="?attr/colorForegroundNotice"
       tools:text="@sample/messages.json/data/time" />
 
-    <TextView
+    <de.kuschku.quasseldroid.ui.chat.messages.RipplePassthroughTextView
       android:id="@+id/content"
       android:layout_width="0dip"
       android:layout_height="wrap_content"
diff --git a/app/src/main/res/layout/widget_chatmessage_plain.xml b/app/src/main/res/layout/widget_chatmessage_plain.xml
index 451a8535e..2c38ff54c 100644
--- a/app/src/main/res/layout/widget_chatmessage_plain.xml
+++ b/app/src/main/res/layout/widget_chatmessage_plain.xml
@@ -28,7 +28,7 @@
       android:typeface="monospace"
       tools:text="@sample/messages.json/data/time" />
 
-    <TextView
+    <de.kuschku.quasseldroid.ui.chat.messages.RipplePassthroughTextView
       android:id="@+id/content"
       android:layout_width="0dip"
       android:layout_height="wrap_content"
diff --git a/app/src/main/res/layout/widget_chatmessage_server.xml b/app/src/main/res/layout/widget_chatmessage_server.xml
index 7ab995cb8..6f83feb97 100644
--- a/app/src/main/res/layout/widget_chatmessage_server.xml
+++ b/app/src/main/res/layout/widget_chatmessage_server.xml
@@ -28,7 +28,7 @@
       android:typeface="monospace"
       tools:text="@sample/messages.json/data/time" />
 
-    <TextView
+    <de.kuschku.quasseldroid.ui.chat.messages.RipplePassthroughTextView
       android:id="@+id/content"
       android:layout_width="0dip"
       android:layout_height="wrap_content"
-- 
GitLab