From ef8f508ee4c5763fc2da7113c239eb58839fb083 Mon Sep 17 00:00:00 2001 From: Brent Simmons Date: Sat, 27 Jan 2018 12:34:53 -0800 Subject: [PATCH] Add NSOutlineView extension methods: canSelectItem and selectItemAndScrollToVisible. --- .../RSCore/NSOutlineView+Extensions.swift | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) 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) + } }