From 2412f6f63a16959cf6003dcadb5f725baef051c0 Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Mon, 13 Jun 2022 13:05:56 -0300 Subject: [PATCH] Fix outgoing quote over media. --- .../securesms/conversation/ConversationItem.java | 13 +++++++++++++ .../org/thoughtcrime/securesms/util/Projection.java | 9 +++++++++ 2 files changed, 22 insertions(+) diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItem.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItem.java index f53d92171..d4b7f26d3 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItem.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItem.java @@ -1993,6 +1993,19 @@ public final class ConversationItem extends RelativeLayout implements BindableCo colorizerProjections.addAll(projections); } else if (hasThumbnail(messageRecord) && mediaThumb != null) { + if (hasQuote(messageRecord) && quoteView != null) { + Projection quote = Projection.relativeToParent(coordinateRoot, bodyBubble, bodyBubbleCorners).translateX(bodyBubble.getTranslationX()); + int quoteViewTop = (int) quote.getY(); + int mediaTop = (int) mediaThumb.getY(); + + colorizerProjections.add( + quote.insetBottom(quote.getHeight() - (mediaTop - quoteViewTop)) + .scale(bodyBubble.getScaleX()) + .translateX(translationX) + .translateY(translationY) + ); + } + colorizerProjections.add( bodyBubbleToRoot.insetTop(mediaThumb.getHeight()) .scale(bodyBubble.getScaleX()) diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/Projection.java b/app/src/main/java/org/thoughtcrime/securesms/util/Projection.java index d29ea19d6..0307ea043 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/Projection.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/Projection.java @@ -131,6 +131,15 @@ public final class Projection { return set(x, y + boundary, width, height - boundary, newCorners); } + public @NonNull Projection insetBottom(int boundary) { + Corners newCorners = this.corners == null ? null : new Corners(this.corners.topLeft, + this.corners.topRight, + 0, + 0); + + return set(x, y, width, height - boundary, newCorners); + } + public static @NonNull Projection relativeToParent(@NonNull ViewGroup parent, @NonNull View view, @Nullable Corners corners) { Rect viewBounds = new Rect();