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