diff --git a/Frameworks/RSCore/RSCore/NSOutlineView+Extensions.swift b/Frameworks/RSCore/RSCore/NSOutlineView+Extensions.swift index 2c0f018f4..94d0c1ef1 100755 --- a/Frameworks/RSCore/RSCore/NSOutlineView+Extensions.swift +++ b/Frameworks/RSCore/RSCore/NSOutlineView+Extensions.swift @@ -159,9 +159,28 @@ public extension NSOutlineView { guard let item = item(atRow: row) else { return false } + return canSelectItem(item) + } + + func canSelectItem(_ item: Any) -> Bool { + let isSelectable = delegate?.outlineView?(self, shouldSelectItem: item) ?? true return isSelectable } + + func selectItemAndScrollToVisible(_ item: Any) { + + guard canSelectItem(item) else { + return + } + + let rowToSelect = row(forItem: item) + guard rowToSelect != -1 else { + return + } + + rs_selectRowAndScrollToVisible(rowToSelect) + } }