From e271730f335160ff8cd18f1fe97244c129c59252 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Fri, 20 Jul 2018 16:21:40 -0400 Subject: [PATCH] Ignore gestures in date breaks and unread indicators. --- .../ConversationView/Cells/OWSMessageCell.m | 25 +++++++++++++++++++ .../Cells/OWSSystemMessageCell.m | 17 +++++++++++++ 2 files changed, 42 insertions(+) diff --git a/Signal/src/ViewControllers/ConversationView/Cells/OWSMessageCell.m b/Signal/src/ViewControllers/ConversationView/Cells/OWSMessageCell.m index 389c95ae3..4bc40b0d4 100644 --- a/Signal/src/ViewControllers/ConversationView/Cells/OWSMessageCell.m +++ b/Signal/src/ViewControllers/ConversationView/Cells/OWSMessageCell.m @@ -405,6 +405,10 @@ NS_ASSUME_NONNULL_BEGIN return; } + if ([self isGestureInCellHeader:sender]) { + return; + } + if (self.viewItem.interaction.interactionType == OWSInteractionType_OutgoingMessage) { TSOutgoingMessage *outgoingMessage = (TSOutgoingMessage *)self.viewItem.interaction; if (outgoingMessage.messageState == TSOutgoingMessageStateFailed) { @@ -427,6 +431,10 @@ NS_ASSUME_NONNULL_BEGIN return; } + if ([self isGestureInCellHeader:sender]) { + return; + } + if (self.viewItem.interaction.interactionType == OWSInteractionType_OutgoingMessage) { TSOutgoingMessage *outgoingMessage = (TSOutgoingMessage *)self.viewItem.interaction; if (outgoingMessage.messageState == TSOutgoingMessageStateFailed) { @@ -460,9 +468,26 @@ NS_ASSUME_NONNULL_BEGIN { OWSAssert(self.delegate); + if ([self isGestureInCellHeader:panRecognizer]) { + return; + } + [self.delegate didPanWithGestureRecognizer:panRecognizer viewItem:self.viewItem]; } +- (BOOL)isGestureInCellHeader:(UIGestureRecognizer *)sender +{ + OWSAssert(self.viewItem); + + if (!self.viewItem.hasCellHeader) { + return NO; + } + + CGPoint location = [sender locationInView:self]; + CGPoint headerBottom = [self convertPoint:CGPointMake(0, self.headerView.height) fromView:self.headerView]; + return location.y <= headerBottom.y; +} + @end NS_ASSUME_NONNULL_END diff --git a/Signal/src/ViewControllers/ConversationView/Cells/OWSSystemMessageCell.m b/Signal/src/ViewControllers/ConversationView/Cells/OWSSystemMessageCell.m index 2851ee105..4c9cd0b5f 100644 --- a/Signal/src/ViewControllers/ConversationView/Cells/OWSSystemMessageCell.m +++ b/Signal/src/ViewControllers/ConversationView/Cells/OWSSystemMessageCell.m @@ -556,6 +556,10 @@ typedef void (^SystemMessageActionBlock)(void); { OWSAssert(self.delegate); + if ([self isGestureInCellHeader:longPress]) { + return; + } + TSInteraction *interaction = self.viewItem.interaction; OWSAssert(interaction); @@ -564,6 +568,19 @@ typedef void (^SystemMessageActionBlock)(void); } } +- (BOOL)isGestureInCellHeader:(UIGestureRecognizer *)sender +{ + OWSAssert(self.viewItem); + + if (!self.viewItem.hasCellHeader) { + return NO; + } + + CGPoint location = [sender locationInView:self]; + CGPoint headerBottom = [self convertPoint:CGPointMake(0, self.headerView.height) fromView:self.headerView]; + return location.y <= headerBottom.y; +} + - (void)buttonWasPressed:(id)sender { if (!self.action.block) {