From eb5cf3978c34f7bc43fc00d4ee00b71b41566491 Mon Sep 17 00:00:00 2001
From: Matthew Chen <matthew@signal.org>
Date: Thu, 28 Mar 2019 15:11:58 -0400
Subject: [PATCH] Fix first responder issue in image editor.

---
 .../AttachmentApprovalViewController.swift               | 4 +++-
 .../ImageEditor/ImageEditorBrushViewController.swift     | 5 +++++
 .../ImageEditor/ImageEditorCropViewController.swift      | 9 +++++----
 .../ImageEditor/ImageEditorTextViewController.swift      | 5 +++++
 4 files changed, 18 insertions(+), 5 deletions(-)

diff --git a/SignalMessaging/ViewControllers/AttachmentApproval/AttachmentApprovalViewController.swift b/SignalMessaging/ViewControllers/AttachmentApproval/AttachmentApprovalViewController.swift
index 6c674f1b7..cba9ceffa 100644
--- a/SignalMessaging/ViewControllers/AttachmentApproval/AttachmentApprovalViewController.swift
+++ b/SignalMessaging/ViewControllers/AttachmentApproval/AttachmentApprovalViewController.swift
@@ -328,7 +328,9 @@ public class AttachmentApprovalViewController: UIPageViewController, UIPageViewC
     }
 
     private func updateControlVisibility() {
-        if !shouldHideControls, !isFirstResponder {
+        let hasPresentedView = self.presentedViewController != nil
+
+        if !shouldHideControls, !isFirstResponder, !hasPresentedView {
             becomeFirstResponder()
         }
         bottomToolView.shouldHideControls = shouldHideControls
diff --git a/SignalMessaging/Views/ImageEditor/ImageEditorBrushViewController.swift b/SignalMessaging/Views/ImageEditor/ImageEditorBrushViewController.swift
index 6848b4a13..a6ea171f3 100644
--- a/SignalMessaging/Views/ImageEditor/ImageEditorBrushViewController.swift
+++ b/SignalMessaging/Views/ImageEditor/ImageEditorBrushViewController.swift
@@ -119,6 +119,11 @@ public class ImageEditorBrushViewController: OWSViewController {
         return true
     }
 
+    @objc
+    override public var canBecomeFirstResponder: Bool {
+        return true
+    }
+
     // MARK: - Actions
 
     @objc func didTapUndo(sender: UIButton) {
diff --git a/SignalMessaging/Views/ImageEditor/ImageEditorCropViewController.swift b/SignalMessaging/Views/ImageEditor/ImageEditorCropViewController.swift
index 9714a73c3..2cfedcd9c 100644
--- a/SignalMessaging/Views/ImageEditor/ImageEditorCropViewController.swift
+++ b/SignalMessaging/Views/ImageEditor/ImageEditorCropViewController.swift
@@ -242,6 +242,11 @@ class ImageEditorCropViewController: OWSViewController {
         return true
     }
 
+    @objc
+    override public var canBecomeFirstResponder: Bool {
+        return true
+    }
+
     private static let desiredCornerSize: CGFloat = 24
     private static let minCropSize: CGFloat = desiredCornerSize * 2
     private var cornerSize = CGSize.zero
@@ -407,10 +412,6 @@ class ImageEditorCropViewController: OWSViewController {
         panGestureRecognizer.shouldBeRequiredToFail(by: pinchGestureRecognizer)
     }
 
-    override public var canBecomeFirstResponder: Bool {
-        return true
-    }
-
     // MARK: - Gestures
 
     private class func unitTranslation(oldLocationView: CGPoint,
diff --git a/SignalMessaging/Views/ImageEditor/ImageEditorTextViewController.swift b/SignalMessaging/Views/ImageEditor/ImageEditorTextViewController.swift
index beb16d220..52c4523f1 100644
--- a/SignalMessaging/Views/ImageEditor/ImageEditorTextViewController.swift
+++ b/SignalMessaging/Views/ImageEditor/ImageEditorTextViewController.swift
@@ -239,6 +239,11 @@ public class ImageEditorTextViewController: OWSViewController, VAlignTextViewDel
         return true
     }
 
+    @objc
+    override public var canBecomeFirstResponder: Bool {
+        return true
+    }
+
     // MARK: - Pinch Gesture
 
     private var pinchFontStart: UIFont?