From 951f64a150676e70fcbf0c38b616daa071ea5797 Mon Sep 17 00:00:00 2001
From: Janne Koschinski <janne@kuschku.de>
Date: Tue, 27 Mar 2018 02:52:42 +0200
Subject: [PATCH] Correctly tint all action modes

---
 .../de/kuschku/quasseldroid/ui/chat/ChatActivity.kt   | 11 +++++++----
 .../ui/chat/messages/MessageListFragment.kt           |  1 -
 .../de/kuschku/quasseldroid/util/helper/MenuHelper.kt |  7 ++++---
 app/src/main/res/values/styles_widgets.xml            |  1 +
 4 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ChatActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ChatActivity.kt
index 954d5e392..c4d4496ac 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ChatActivity.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ChatActivity.kt
@@ -16,10 +16,7 @@ import android.support.v7.widget.LinearLayoutManager
 import android.support.v7.widget.RecyclerView
 import android.support.v7.widget.Toolbar
 import android.text.Html
-import android.view.Gravity
-import android.view.Menu
-import android.view.MenuItem
-import android.view.View
+import android.view.*
 import android.widget.EditText
 import butterknife.BindView
 import butterknife.ButterKnife
@@ -41,6 +38,7 @@ import de.kuschku.quasseldroid.ui.chat.input.MessageHistoryAdapter
 import de.kuschku.quasseldroid.ui.settings.app.AppSettingsActivity
 import de.kuschku.quasseldroid.util.helper.editCommit
 import de.kuschku.quasseldroid.util.helper.invoke
+import de.kuschku.quasseldroid.util.helper.retint
 import de.kuschku.quasseldroid.util.helper.toLiveData
 import de.kuschku.quasseldroid.util.service.ServiceBoundActivity
 import de.kuschku.quasseldroid.util.ui.MaterialContentLoadingProgressBar
@@ -257,6 +255,11 @@ class ChatActivity : ServiceBoundActivity(), SharedPreferences.OnSharedPreferenc
     editorPanel.panelState = SlidingUpPanelLayout.PanelState.COLLAPSED
   }
 
+  override fun onActionModeStarted(mode: ActionMode?) {
+    mode?.menu?.retint(toolbar.context)
+    super.onActionModeStarted(mode)
+  }
+
   override fun onStart() {
     if (Settings.autoComplete(this) != autoCompleteSettings) {
       recreate()
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageListFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageListFragment.kt
index da53bae83..e6a55ceef 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageListFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/messages/MessageListFragment.kt
@@ -105,7 +105,6 @@ class MessageListFragment : ServiceBoundFragment() {
     override fun onCreateActionMode(mode: ActionMode?, menu: Menu?): Boolean {
       actionMode = mode
       mode?.menuInflater?.inflate(R.menu.context_messages, menu)
-      menu?.retint(requireContext())
       return true
     }
 
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/helper/MenuHelper.kt b/app/src/main/java/de/kuschku/quasseldroid/util/helper/MenuHelper.kt
index abc5cc3a1..32a4c0e5b 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/helper/MenuHelper.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/helper/MenuHelper.kt
@@ -10,9 +10,10 @@ fun Menu.retint(context: Context) {
     val color = getColor(0, 0)
 
     for (item in (0 until size()).map { getItem(it) }) {
-      val drawable = item.icon.mutate()
-      DrawableCompat.setTint(drawable, color)
-      item.icon = drawable
+      item.icon?.mutate()?.let { drawable ->
+        DrawableCompat.setTint(drawable, color)
+        item.icon = drawable
+      }
     }
   }
 }
\ No newline at end of file
diff --git a/app/src/main/res/values/styles_widgets.xml b/app/src/main/res/values/styles_widgets.xml
index 6fbeebcf0..2524553dd 100644
--- a/app/src/main/res/values/styles_widgets.xml
+++ b/app/src/main/res/values/styles_widgets.xml
@@ -20,6 +20,7 @@
     <item name="colorControlNormal">?colorTextPrimary</item>
     <item name="android:textColorPrimary">?colorTextPrimary</item>
     <item name="android:textColorSecondary">?colorTextSecondary</item>
+    <item name="android:actionModeBackground">?colorPrimary</item>
   </style>
 
   <style name="Widget.AppBarOverlay.Light" parent="ThemeOverlay.AppCompat.ActionBar">
-- 
GitLab