From a116a0a87d8d0768066bee2a89c4f56f81a5356d Mon Sep 17 00:00:00 2001 From: Kateryna Kostiuk <kateryna.kostiuk@savoirfairelinux.com> Date: Thu, 9 Jul 2020 11:39:22 -0400 Subject: [PATCH] conversation: fix crash when open file during call Change-Id: I120b2dfa6a355b73493c52aca18c6ec471865ba5 Gitlab: #251 --- src/MessagesVC.mm | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/MessagesVC.mm b/src/MessagesVC.mm index 4c67b894..b6cd8572 100644 --- a/src/MessagesVC.mm +++ b/src/MessagesVC.mm @@ -1010,6 +1010,7 @@ typedef NS_ENUM(NSInteger, MessageSequencing) { if (!previewImage || previewImage.length <= 0) { return; } + [self addToResponderChain]; if ([QLPreviewPanel sharedPreviewPanelExists] && [[QLPreviewPanel sharedPreviewPanel] isVisible]) { [[QLPreviewPanel sharedPreviewPanel] orderOut:nil]; } else { @@ -1150,6 +1151,7 @@ typedef NS_ENUM(NSInteger, MessageSequencing) { - (void)endPreviewPanelControl:(QLPreviewPanel *)panel { panel.dataSource = nil; + [self removeFromResponderChain]; } -(BOOL)acceptsPreviewPanelControl:(QLPreviewPanel *)panel @@ -1162,6 +1164,9 @@ typedef NS_ENUM(NSInteger, MessageSequencing) { } - (id <QLPreviewItem>)previewPanel:(QLPreviewPanel *)panel previewItemAtIndex:(NSInteger)index { + if (previewImage == nil) { + return nil; + } try { return [NSURL fileURLWithPath: previewImage]; } catch (NSException *exception) { @@ -1169,4 +1174,21 @@ typedef NS_ENUM(NSInteger, MessageSequencing) { } } +- (void)addToResponderChain { + if (conversationView.window && + ![[conversationView.window nextResponder] isEqual:self]) { + NSResponder * aNextResponder = [conversationView.window nextResponder]; + [conversationView.window setNextResponder:self]; + } +} + + +- (void)removeFromResponderChain { + if (conversationView.window && + [[conversationView.window nextResponder] isEqual:self]) { + NSResponder * aNextResponder = [conversationView.window nextResponder]; + [conversationView.window setNextResponder:[self nextResponder]]; + } +} + @end -- GitLab