From 0a3a73c1a5890cf7f3b21cdf688fda4336132cc9 Mon Sep 17 00:00:00 2001 From: Florian Zand Date: Sat, 10 May 2025 12:13:46 +0200 Subject: [PATCH 1/2] updated --- .../Example/TableSidebarViewController.swift | 2 +- .../NSCollectionView+DragSessionMove.swift | 19 ++++++++----------- .../NSTableView+DragSessionMove.swift | 15 ++++++++------- 3 files changed, 17 insertions(+), 19 deletions(-) diff --git a/Example/Example/TableSidebarViewController.swift b/Example/Example/TableSidebarViewController.swift index 9edfdcfb..a0c1c8d2 100644 --- a/Example/Example/TableSidebarViewController.swift +++ b/Example/Example/TableSidebarViewController.swift @@ -16,7 +16,7 @@ class TableSidebarViewController: NSViewController { @IBOutlet var tableView: NSTableView! lazy var dataSource = DataSource(tableView: tableView, cellRegistration: cellRegistration) - + let cellRegistration = CellRegistration { tableCell, _, _, sidebarItem in /// `defaultContentConfiguration` returns a table cell content configuration with default styling based on the table view it's displayed at (in this case a sidebar table). var configuration = tableCell.defaultContentConfiguration() diff --git a/Sources/AdvancedCollectionTableView/Extensions/NSCollectionView/NSCollectionView+DragSessionMove.swift b/Sources/AdvancedCollectionTableView/Extensions/NSCollectionView/NSCollectionView+DragSessionMove.swift index 35a56b6b..bd6e981c 100644 --- a/Sources/AdvancedCollectionTableView/Extensions/NSCollectionView/NSCollectionView+DragSessionMove.swift +++ b/Sources/AdvancedCollectionTableView/Extensions/NSCollectionView/NSCollectionView+DragSessionMove.swift @@ -15,22 +15,19 @@ extension NSCollectionView { setAssociatedValue(newValue, key: "draggingSessionMoveHandler") let selector = #selector(NSCollectionView.draggingSession(_:movedTo:)) if newValue != nil { - guard !isMethodReplaced(selector) else { return } + guard !isMethodHooked(selector) else { return } do { - try replaceMethod( - selector, - methodSignature: (@convention(c) (AnyObject, Selector, NSDraggingSession, CGPoint) -> ()).self, - hookSignature: (@convention(block) (AnyObject, NSDraggingSession, CGPoint) -> ()).self) { store in { - object, session, point in - (object as? NSCollectionView)?.draggingSessionMoveHandler?(session, point) - store.original(object, selector, session, point) - } - } + try hook(selector, closure: { original, object, sel, session, point in + (object as? NSCollectionView)?.draggingSessionMoveHandler?(session, point) + original(object, sel, session, point) + } as @convention(block) ( + (AnyObject, Selector, NSDraggingSession, CGPoint) -> Void, + AnyObject, Selector, NSDraggingSession, CGPoint) -> Void) } catch { debugPrint(error) } } else { - resetMethod(selector) + revertHooks(for: selector) } } } diff --git a/Sources/AdvancedCollectionTableView/Extensions/NSTableView/NSTableView+DragSessionMove.swift b/Sources/AdvancedCollectionTableView/Extensions/NSTableView/NSTableView+DragSessionMove.swift index 76131f61..6e6948b3 100644 --- a/Sources/AdvancedCollectionTableView/Extensions/NSTableView/NSTableView+DragSessionMove.swift +++ b/Sources/AdvancedCollectionTableView/Extensions/NSTableView/NSTableView+DragSessionMove.swift @@ -14,15 +14,15 @@ extension NSTableView { set { setAssociatedValue(newValue, key: "draggingSessionMoveHandler") let selector = #selector(NSTableView.draggingSession(_:movedTo:)) - if newValue != nil, !isMethodReplaced(selector) { + if newValue != nil, !isMethodReplaced(selector), !isMethodHooked(selector) { do { if responds(to: selector) { - try replaceMethod(selector, - methodSignature: (@convention(c) (AnyObject, Selector, NSDraggingSession, CGPoint) -> ()).self, - hookSignature: (@convention(block) (AnyObject, NSDraggingSession, CGPoint) -> ()).self) { store in { object, session, point in - (object as? NSTableView)?.draggingSessionMovedHandler?(session, point) - store.original(object, selector, session, point) - } } + try hook(selector, closure: { original, object, sel, session, point in + (object as? NSTableView)?.draggingSessionMovedHandler?(session, point) + original(object, sel, session, point) + } as @convention(block) ( + (AnyObject, Selector, NSDraggingSession, CGPoint) -> Void, + AnyObject, Selector, NSDraggingSession, CGPoint) -> Void) } else { try addMethod(selector, methodSignature: (@convention(block) (AnyObject, NSDraggingSession, CGPoint) -> ()).self) { object, session, point in @@ -34,6 +34,7 @@ extension NSTableView { } } else if newValue == nil { resetMethod(selector) + revertHooks(for: selector) } } } From 5e2869feff365ff97aa1211b49508a5ee15709e4 Mon Sep 17 00:00:00 2001 From: Florian Zand Date: Sat, 10 May 2025 16:20:43 +0200 Subject: [PATCH 2/2] Update NSTableView+DragSessionMove.swift --- .../Extensions/NSTableView/NSTableView+DragSessionMove.swift | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Sources/AdvancedCollectionTableView/Extensions/NSTableView/NSTableView+DragSessionMove.swift b/Sources/AdvancedCollectionTableView/Extensions/NSTableView/NSTableView+DragSessionMove.swift index 6e6948b3..b102d0ad 100644 --- a/Sources/AdvancedCollectionTableView/Extensions/NSTableView/NSTableView+DragSessionMove.swift +++ b/Sources/AdvancedCollectionTableView/Extensions/NSTableView/NSTableView+DragSessionMove.swift @@ -8,6 +8,7 @@ import AppKit import FZSwiftUtils +/* extension NSTableView { var draggingSessionMovedHandler: ((NSDraggingSession, CGPoint)->())? { get { getAssociatedValue("draggingSessionMoveHandler") } @@ -39,3 +40,4 @@ extension NSTableView { } } } +*/