diff --git a/src/MessagesVC.mm b/src/MessagesVC.mm index 4c67b894b0f633f8a864d4772ad15d25f73c05ba..b6cd85727e7e8ecd3b7098db3b5dde414d07e940 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