From d99d8d84aa6ef064aad8a169c296530fbb699754 Mon Sep 17 00:00:00 2001 From: M66B Date: Mon, 18 May 2020 16:28:58 +0200 Subject: [PATCH] Updated recyclerview-selection patch --- patches/recyclerview-selection.patch | 81 ++++++++++++++++++++-------- patches/selection-updated.patch | 56 ------------------- 2 files changed, 59 insertions(+), 78 deletions(-) delete mode 100644 patches/selection-updated.patch diff --git a/patches/recyclerview-selection.patch b/patches/recyclerview-selection.patch index 04aaebe43b..1a2290d6ce 100644 --- a/patches/recyclerview-selection.patch +++ b/patches/recyclerview-selection.patch @@ -1,8 +1,61 @@ -diff --git a/app/src/main/java/androidx/recyclerview/selection/SelectionTracker.java b/app/src/main/java/androidx/recyclerview/selection/SelectionTracker.java -index 50cc4ceb7..910935a0a 100644 ---- a/app/src/main/java/androidx/recyclerview/selection/SelectionTracker.java -+++ b/app/src/main/java/androidx/recyclerview/selection/SelectionTracker.java -@@ -503,7 +503,7 @@ public abstract class SelectionTracker { +diff -rupN /home/marcel/support/recyclerview/recyclerview-selection/src/main/java/androidx/recyclerview/selection/DefaultSelectionTracker.java app/src/main/java/androidx/recyclerview/selection/DefaultSelectionTracker.java +--- /home/marcel/support/recyclerview/recyclerview-selection/src/main/java/androidx/recyclerview/selection/DefaultSelectionTracker.java 2020-03-23 17:03:46.043122318 +0100 ++++ app/src/main/java/androidx/recyclerview/selection/DefaultSelectionTracker.java 2020-04-24 21:08:55.542011257 +0200 +@@ -379,6 +379,10 @@ public class DefaultSelectionTracker + return mRange != null; + } + ++ boolean isOverlapping(int position, int count) { ++ return (mRange != null && mRange.isOverlapping(position, count)); ++ } ++ + private boolean canSetState(@NonNull K key, boolean nextState) { + return mSelectionPredicate.canSetStateForKey(key, nextState); + } +@@ -601,17 +605,21 @@ public class DefaultSelectionTracker + + @Override + public void onItemRangeInserted(int startPosition, int itemCount) { +- mSelectionTracker.endRange(); ++ if (mSelectionTracker.isOverlapping(startPosition, itemCount)) ++ mSelectionTracker.endRange(); + } + + @Override + public void onItemRangeRemoved(int startPosition, int itemCount) { +- mSelectionTracker.endRange(); ++ if (mSelectionTracker.isOverlapping(startPosition, itemCount)) ++ mSelectionTracker.endRange(); + } + + @Override + public void onItemRangeMoved(int fromPosition, int toPosition, int itemCount) { +- mSelectionTracker.endRange(); ++ if (mSelectionTracker.isOverlapping(fromPosition, itemCount) || ++ mSelectionTracker.isOverlapping(toPosition, itemCount)) ++ mSelectionTracker.endRange(); + } + } + } +diff -rupN /home/marcel/support/recyclerview/recyclerview-selection/src/main/java/androidx/recyclerview/selection/Range.java app/src/main/java/androidx/recyclerview/selection/Range.java +--- /home/marcel/support/recyclerview/recyclerview-selection/src/main/java/androidx/recyclerview/selection/Range.java 2020-03-23 17:03:46.045122318 +0100 ++++ app/src/main/java/androidx/recyclerview/selection/Range.java 2020-04-24 21:08:55.543011257 +0200 +@@ -169,6 +169,11 @@ final class Range { + mCallbacks.updateForRange(begin, end, selected, type); + } + ++ boolean isOverlapping(int position, int count) { ++ return (position >= mBegin && position <= mEnd) || ++ (position + count >= mBegin && position + count <= mEnd); ++ } ++ + @Override + public String toString() { + return "Range{begin=" + mBegin + ", end=" + mEnd + "}"; +diff -rupN /home/marcel/support/recyclerview/recyclerview-selection/src/main/java/androidx/recyclerview/selection/SelectionTracker.java app/src/main/java/androidx/recyclerview/selection/SelectionTracker.java +--- /home/marcel/support/recyclerview/recyclerview-selection/src/main/java/androidx/recyclerview/selection/SelectionTracker.java 2020-03-23 17:03:46.046122318 +0100 ++++ app/src/main/java/androidx/recyclerview/selection/SelectionTracker.java 2020-04-24 21:08:55.544011257 +0200 +@@ -503,7 +503,7 @@ public abstract class SelectionTracker { +@@ -815,7 +815,11 @@ public abstract class SelectionTracker extends MotionInputHandler { - } - - @Override -+ public boolean onDoubleTapEvent(MotionEvent e) { -+ return mSelectionTracker.hasSelection(); -+ } -+ -+ @Override - public void onLongPress(@NonNull MotionEvent e) { - if (DEBUG) { - checkArgument(MotionEvents.isFingerEvent(e)); diff --git a/patches/selection-updated.patch b/patches/selection-updated.patch deleted file mode 100644 index cd10212214..0000000000 --- a/patches/selection-updated.patch +++ /dev/null @@ -1,56 +0,0 @@ -diff --git a/app/src/main/java/androidx/recyclerview/selection/DefaultSelectionTracker.java b/app/src/main/java/androidx/recyclerview/selection/DefaultSelectionTracker.java -index 61985cf8d..709308482 100644 ---- a/app/src/main/java/androidx/recyclerview/selection/DefaultSelectionTracker.java -+++ b/app/src/main/java/androidx/recyclerview/selection/DefaultSelectionTracker.java -@@ -379,6 +379,10 @@ public class DefaultSelectionTracker extends SelectionTracker implements R - return mRange != null; - } - -+ boolean isOverlapping(int position, int count) { -+ return (mRange != null && mRange.isOverlapping(position, count)); -+ } -+ - private boolean canSetState(@NonNull K key, boolean nextState) { - return mSelectionPredicate.canSetStateForKey(key, nextState); - } -@@ -601,17 +605,21 @@ public class DefaultSelectionTracker extends SelectionTracker implements R - - @Override - public void onItemRangeInserted(int startPosition, int itemCount) { -- mSelectionTracker.endRange(); -+ if (mSelectionTracker.isOverlapping(startPosition, itemCount)) -+ mSelectionTracker.endRange(); - } - - @Override - public void onItemRangeRemoved(int startPosition, int itemCount) { -- mSelectionTracker.endRange(); -+ if (mSelectionTracker.isOverlapping(startPosition, itemCount)) -+ mSelectionTracker.endRange(); - } - - @Override - public void onItemRangeMoved(int fromPosition, int toPosition, int itemCount) { -- mSelectionTracker.endRange(); -+ if (mSelectionTracker.isOverlapping(fromPosition, itemCount) || -+ mSelectionTracker.isOverlapping(toPosition, itemCount)) -+ mSelectionTracker.endRange(); - } - } - } -diff --git a/app/src/main/java/androidx/recyclerview/selection/Range.java b/app/src/main/java/androidx/recyclerview/selection/Range.java -index 433e0d2cb..85ddeff94 100644 ---- a/app/src/main/java/androidx/recyclerview/selection/Range.java -+++ b/app/src/main/java/androidx/recyclerview/selection/Range.java -@@ -169,6 +169,11 @@ final class Range { - mCallbacks.updateForRange(begin, end, selected, type); - } - -+ boolean isOverlapping(int position, int count) { -+ return (position >= mBegin && position <= mEnd) || -+ (position + count >= mBegin && position + count <= mEnd); -+ } -+ - @Override - public String toString() { - return "Range{begin=" + mBegin + ", end=" + mEnd + "}";