From 2d0feca278bbc3c6604a1710a7929c88f58806a2 Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Tue, 5 Oct 2021 10:36:33 -0300 Subject: [PATCH] Eliminate flicker when entering multiselect. --- .../securesms/conversation/ConversationAdapter.java | 6 ++++-- .../securesms/conversation/ConversationFragment.java | 8 ++++---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationAdapter.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationAdapter.java index 588f8725cf..c4cf4488ef 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationAdapter.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationAdapter.java @@ -489,8 +489,10 @@ public class ConversationAdapter * Conversation search query updated. Allows rendering of text highlighting. */ void onSearchQueryUpdated(String query) { - this.searchQuery = query; - notifyDataSetChanged(); + if (!Objects.equals(query, this.searchQuery)) { + this.searchQuery = query; + notifyDataSetChanged(); + } } /** diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationFragment.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationFragment.java index 34f8a2a23d..662c709f7e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationFragment.java @@ -1365,7 +1365,7 @@ public class ConversationFragment extends LoggingFragment implements Multiselect public void onItemClick(MultiselectPart item) { if (actionMode != null) { ((ConversationAdapter) list.getAdapter()).toggleSelection(item); - list.getAdapter().notifyDataSetChanged(); + list.invalidateItemDecorations(); if (getListAdapter().getSelectedItems().size() == 0) { actionMode.finish(); @@ -1405,7 +1405,7 @@ public class ConversationFragment extends LoggingFragment implements Multiselect } else { clearFocusedItem(); ((ConversationAdapter) list.getAdapter()).toggleSelection(item); - list.getAdapter().notifyDataSetChanged(); + list.invalidateItemDecorations(); actionMode = ((AppCompatActivity)getActivity()).startSupportActionMode(actionModeCallback); } @@ -1740,7 +1740,7 @@ public class ConversationFragment extends LoggingFragment implements Multiselect ((ConversationAdapter) list.getAdapter()).toggleSelection(part); }); - list.getAdapter().notifyDataSetChanged(); + list.invalidateItemDecorations(); actionMode = ((AppCompatActivity)getActivity()).startSupportActionMode(actionModeCallback); } @@ -1884,7 +1884,7 @@ public class ConversationFragment extends LoggingFragment implements Multiselect @Override public void onDestroyActionMode(ActionMode mode) { ((ConversationAdapter)list.getAdapter()).clearSelection(); - list.getAdapter().notifyDataSetChanged(); + list.invalidateItemDecorations(); if (Build.VERSION.SDK_INT >= 21) { WindowUtil.setStatusBarColor(requireActivity().getWindow(), statusBarColor);