From 5b1f1504c3d60f2000d2961bf15279d2060f49b6 Mon Sep 17 00:00:00 2001 From: Janne Koschinski <janne@kuschku.de> Date: Sun, 10 Mar 2019 22:50:05 +0100 Subject: [PATCH] Fixes crash clusters f9e159aa and 75156383 --- .../ui/fastscroll/views/FastScroller.java | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/ui/fastscroll/views/FastScroller.java b/app/src/main/java/de/kuschku/quasseldroid/util/ui/fastscroll/views/FastScroller.java index 71bd5fd57..d510abbca 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/util/ui/fastscroll/views/FastScroller.java +++ b/app/src/main/java/de/kuschku/quasseldroid/util/ui/fastscroll/views/FastScroller.java @@ -261,10 +261,23 @@ public class FastScroller { } // do not create new objects here, this is called quite often mInvalidateRect.set(mRecyclerView.getPaddingLeft() + mThumbPosition.x + mOffset.x, mRecyclerView.getPaddingTop() + mOffset.y, mThumbPosition.x + mOffset.x + mWidth - mRecyclerView.getPaddingRight(), mRecyclerView.getPaddingTop() + mRecyclerView.getHeight() - mRecyclerView.getPaddingBottom() + mOffset.y); - mThumbPosition.set( - x * (mRecyclerView.getWidth() - mRecyclerView.getPaddingLeft() - mRecyclerView.getPaddingLeft()) / mRecyclerView.getWidth() + mRecyclerView.getPaddingLeft(), - y * (mRecyclerView.getHeight() - mRecyclerView.getPaddingTop() - mRecyclerView.getPaddingBottom()) / mRecyclerView.getHeight() + mRecyclerView.getPaddingTop() - ); + int totalWidth = mRecyclerView.getWidth() + mRecyclerView.getPaddingLeft(); + int totalHeight = mRecyclerView.getHeight() + mRecyclerView.getPaddingTop(); + + int dx; + if (totalWidth == 0) { + dx = 0; + } else { + dx = x * (mRecyclerView.getWidth() - mRecyclerView.getPaddingLeft() - mRecyclerView.getPaddingLeft()) / totalWidth; + } + + int dy; + if (totalHeight == 0) { + dy = 0; + } else { + dy = y * (mRecyclerView.getHeight() - mRecyclerView.getPaddingTop() - mRecyclerView.getPaddingBottom()) / totalHeight; + } + mThumbPosition.set(dx, dy); mInvalidateTmpRect.set(mRecyclerView.getPaddingLeft() + mThumbPosition.x + mOffset.x, mRecyclerView.getPaddingTop() + mOffset.y, mThumbPosition.x + mOffset.x + mWidth - mRecyclerView.getPaddingRight(), mRecyclerView.getPaddingTop() + mRecyclerView.getHeight() - mRecyclerView.getPaddingBottom() + mOffset.y); mInvalidateRect.union(mInvalidateTmpRect); mRecyclerView.invalidate(mInvalidateRect); -- GitLab