diff --git a/CHANGES.md b/CHANGES.md
index a028ef6f1e..27229361a7 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -9,6 +9,7 @@ Improvements 🙌:
 
 Bugfix 🐛:
  - Url previews sometimes attached to wrong message (#2561)
+ - Room Topic not displayed correctly after visiting a link (#2551)
 
 Translations 🗣:
  -
diff --git a/vector/src/main/java/im/vector/app/core/epoxy/ExpandableTextItem.kt b/vector/src/main/java/im/vector/app/core/epoxy/ExpandableTextItem.kt
index 3dceec48ef..eb8d4a41c4 100644
--- a/vector/src/main/java/im/vector/app/core/epoxy/ExpandableTextItem.kt
+++ b/vector/src/main/java/im/vector/app/core/epoxy/ExpandableTextItem.kt
@@ -18,6 +18,7 @@ package im.vector.app.core.epoxy
 
 import android.animation.ObjectAnimator
 import android.text.TextUtils
+import android.text.method.MovementMethod
 import android.widget.ImageView
 import android.widget.TextView
 import androidx.core.view.doOnPreDraw
@@ -25,7 +26,6 @@ import androidx.core.view.isVisible
 import com.airbnb.epoxy.EpoxyAttribute
 import com.airbnb.epoxy.EpoxyModelClass
 import im.vector.app.R
-import im.vector.app.core.extensions.copyOnLongClick
 
 @EpoxyModelClass(layout = R.layout.item_expandable_textview)
 abstract class ExpandableTextItem : VectorEpoxyModel<ExpandableTextItem.Holder>() {
@@ -36,13 +36,16 @@ abstract class ExpandableTextItem : VectorEpoxyModel<ExpandableTextItem.Holder>(
     @EpoxyAttribute
     var maxLines: Int = 3
 
+    @EpoxyAttribute(EpoxyAttribute.Option.DoNotHash)
+    var movementMethod: MovementMethod? = null
+
     private var isExpanded = false
     private var expandedLines = 0
 
     override fun bind(holder: Holder) {
         super.bind(holder)
         holder.content.text = content
-        holder.content.copyOnLongClick()
+        holder.content.movementMethod = movementMethod
 
         holder.content.doOnPreDraw {
             if (holder.content.lineCount > maxLines) {
diff --git a/vector/src/main/java/im/vector/app/core/ui/views/NonScrollingTextView.kt b/vector/src/main/java/im/vector/app/core/ui/views/NonScrollingTextView.kt
new file mode 100644
index 0000000000..712432abfd
--- /dev/null
+++ b/vector/src/main/java/im/vector/app/core/ui/views/NonScrollingTextView.kt
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2020 New Vector Ltd
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package im.vector.app.core.ui.views
+
+import android.content.Context
+import android.util.AttributeSet
+import androidx.appcompat.widget.AppCompatTextView
+
+class NonScrollingTextView : AppCompatTextView {
+    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 scrollTo(x: Int, y: Int) {
+        // NOOP
+    }
+}
diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileController.kt b/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileController.kt
index 891d15d04f..6b988df94d 100644
--- a/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileController.kt
+++ b/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileController.kt
@@ -26,6 +26,8 @@ import im.vector.app.core.resources.ColorProvider
 import im.vector.app.core.resources.StringProvider
 import im.vector.app.core.ui.list.genericFooterItem
 import im.vector.app.features.home.ShortcutCreator
+import im.vector.app.features.home.room.detail.timeline.TimelineEventController
+import im.vector.app.features.home.room.detail.timeline.tools.createLinkMovementMethod
 import im.vector.app.features.settings.VectorPreferences
 import org.matrix.android.sdk.api.crypto.RoomEncryptionTrustLevel
 import org.matrix.android.sdk.api.session.room.model.RoomSummary
@@ -53,6 +55,7 @@ class RoomProfileController @Inject constructor(
         fun onSettingsClicked()
         fun onLeaveRoomClicked()
         fun onRoomIdClicked()
+        fun onUrlInTopicLongClicked(url: String)
     }
 
     override fun buildModels(data: RoomProfileViewState?) {
@@ -71,6 +74,16 @@ class RoomProfileController @Inject constructor(
                         id("topic")
                         content(it)
                         maxLines(2)
+                        movementMethod(createLinkMovementMethod(object : TimelineEventController.UrlClickCallback {
+                            override fun onUrlClicked(url: String, title: String): Boolean {
+                                return false
+                            }
+
+                            override fun onUrlLongClicked(url: String): Boolean {
+                                callback?.onUrlInTopicLongClicked(url)
+                                return true
+                            }
+                        }))
                     }
                 }
 
diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileFragment.kt b/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileFragment.kt
index 473c1d4324..44e17a1681 100644
--- a/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileFragment.kt
+++ b/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileFragment.kt
@@ -261,6 +261,10 @@ class RoomProfileFragment @Inject constructor(
         copyToClipboard(requireContext(), roomProfileArgs.roomId)
     }
 
+    override fun onUrlInTopicLongClicked(url: String) {
+        copyToClipboard(requireContext(), url, true)
+    }
+
     private fun onShareRoomProfile(permalink: String) {
         startSharePlainTextIntent(
                 fragment = this,
diff --git a/vector/src/main/res/layout/item_expandable_textview.xml b/vector/src/main/res/layout/item_expandable_textview.xml
index 9f61a3c4d4..4dc7085737 100644
--- a/vector/src/main/res/layout/item_expandable_textview.xml
+++ b/vector/src/main/res/layout/item_expandable_textview.xml
@@ -6,7 +6,7 @@
     android:layout_height="wrap_content"
     android:padding="16dp">
 
-    <TextView
+    <im.vector.app.core.ui.views.NonScrollingTextView
         android:id="@+id/expandableContent"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"