Skip to content

Commit

Permalink
Preven cell editor from being focussed when adding to table (#336)
Browse files Browse the repository at this point in the history
  • Loading branch information
rajdeep authored Aug 20, 2024
1 parent 6991a85 commit 0fe6df3
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 7 deletions.
13 changes: 13 additions & 0 deletions Proton/Sources/Swift/Core/RichTextView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,19 @@ class RichTextView: AutogrowingTextView {

private var delegateOverrides = [GestureRecognizerDelegateOverride]()

private var _canBecomeFirstResponder = true
override var canBecomeFirstResponder: Bool {
return _canBecomeFirstResponder
}

func disableFirstResponder() {
_canBecomeFirstResponder = false
}

func enableFirstResponder() {
_canBecomeFirstResponder = true
}

var preserveBlockAttachmentNewline: PreserveBlockAttachmentNewline = .none {
didSet {
richTextStorage.preserveNewlineBeforeBlock = false
Expand Down
9 changes: 3 additions & 6 deletions Proton/Sources/Swift/Editor/EditorView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -584,22 +584,19 @@ open class EditorView: UIView {
richTextView.text
}

// Boolean flag to control first responder state
private var canBecomeFirstResponderFlag = true

// Override canBecomeFirstResponder property
open override var canBecomeFirstResponder: Bool {
return canBecomeFirstResponderFlag
return richTextView.canBecomeFirstResponder
}

// Method to disable becoming first responder
func disableFirstResponder() {
canBecomeFirstResponderFlag = false
richTextView.disableFirstResponder()
}

// Method to enable becoming first responder
func enableFirstResponder() {
canBecomeFirstResponderFlag = true
richTextView.enableFirstResponder()
}

public var selectedRange: NSRange {
Expand Down
6 changes: 6 additions & 0 deletions Proton/Sources/Swift/Table/TableCell.swift
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,12 @@ public class TableCell {
contentView?.showEditor()
}

func performWithoutChangingFirstResponder(_ closure: () -> Void) {
editor?.disableFirstResponder()
closure()
editor?.enableFirstResponder()
}

func removeContentView() {
attributedText = contentView?.editor.attributedText
frame = contentView?.frame ?? frame
Expand Down
4 changes: 3 additions & 1 deletion Proton/Sources/Swift/Table/TableContentView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -534,7 +534,9 @@ class TableContentView: UIScrollView {

extension TableContentView: TableCellDelegate {
func cell(_ cell: TableCell, didAddContentView view: TableCellContentView) {
addSubview(view)
cell.performWithoutChangingFirstResponder { [weak self] in
self?.addSubview(view)
}
tableContentViewDelegate?.tableContentView(self, didAddCellToViewport: cell)
}

Expand Down

0 comments on commit 0fe6df3

Please sign in to comment.