Change drag-n-drop behavior to default to copy when dragging between accounts
This commit is contained in:
parent
afd9a47abd
commit
1f159a5bff
|
@ -215,13 +215,13 @@ private extension SidebarOutlineDataSource {
|
||||||
return SidebarOutlineDataSource.dragOperationNone
|
return SidebarOutlineDataSource.dragOperationNone
|
||||||
}
|
}
|
||||||
if parentNode == dropTargetNode && index == NSOutlineViewDropOnItemIndex {
|
if parentNode == dropTargetNode && index == NSOutlineViewDropOnItemIndex {
|
||||||
return localDragOperation()
|
return localDragOperation(parentNode: parentNode)
|
||||||
}
|
}
|
||||||
let updatedIndex = indexWhereDraggedFeedWouldAppear(dropTargetNode, draggedFeed)
|
let updatedIndex = indexWhereDraggedFeedWouldAppear(dropTargetNode, draggedFeed)
|
||||||
if parentNode !== dropTargetNode || index != updatedIndex {
|
if parentNode !== dropTargetNode || index != updatedIndex {
|
||||||
outlineView.setDropItem(dropTargetNode, dropChildIndex: updatedIndex)
|
outlineView.setDropItem(dropTargetNode, dropChildIndex: updatedIndex)
|
||||||
}
|
}
|
||||||
return localDragOperation()
|
return localDragOperation(parentNode: parentNode)
|
||||||
}
|
}
|
||||||
|
|
||||||
func validateLocalFeedsDrop(_ outlineView: NSOutlineView, _ draggedFeeds: Set<PasteboardWebFeed>, _ parentNode: Node, _ index: Int) -> NSDragOperation {
|
func validateLocalFeedsDrop(_ outlineView: NSOutlineView, _ draggedFeeds: Set<PasteboardWebFeed>, _ parentNode: Node, _ index: Int) -> NSDragOperation {
|
||||||
|
@ -238,15 +238,24 @@ private extension SidebarOutlineDataSource {
|
||||||
if parentNode !== dropTargetNode || index != NSOutlineViewDropOnItemIndex {
|
if parentNode !== dropTargetNode || index != NSOutlineViewDropOnItemIndex {
|
||||||
outlineView.setDropItem(dropTargetNode, dropChildIndex: NSOutlineViewDropOnItemIndex)
|
outlineView.setDropItem(dropTargetNode, dropChildIndex: NSOutlineViewDropOnItemIndex)
|
||||||
}
|
}
|
||||||
return localDragOperation()
|
return localDragOperation(parentNode: parentNode)
|
||||||
}
|
}
|
||||||
|
|
||||||
func localDragOperation() -> NSDragOperation {
|
func localDragOperation(parentNode: Node) -> NSDragOperation {
|
||||||
|
guard let firstDraggedNode = draggedNodes?.first else { return .move }
|
||||||
|
if sameAccount(firstDraggedNode, parentNode) {
|
||||||
if NSApplication.shared.currentEvent?.modifierFlags.contains(.option) ?? false {
|
if NSApplication.shared.currentEvent?.modifierFlags.contains(.option) ?? false {
|
||||||
return .copy
|
return .copy
|
||||||
} else {
|
} else {
|
||||||
return .move
|
return .move
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
if NSApplication.shared.currentEvent?.modifierFlags.contains(.option) ?? false {
|
||||||
|
return .move
|
||||||
|
} else {
|
||||||
|
return .copy
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func accountForNode(_ node: Node) -> Account? {
|
func accountForNode(_ node: Node) -> Account? {
|
||||||
|
@ -294,7 +303,7 @@ private extension SidebarOutlineDataSource {
|
||||||
if index != updatedIndex {
|
if index != updatedIndex {
|
||||||
outlineView.setDropItem(parentNode, dropChildIndex: updatedIndex)
|
outlineView.setDropItem(parentNode, dropChildIndex: updatedIndex)
|
||||||
}
|
}
|
||||||
return localDragOperation()
|
return localDragOperation(parentNode: parentNode)
|
||||||
}
|
}
|
||||||
|
|
||||||
func validateLocalFoldersDrop(_ outlineView: NSOutlineView, _ draggedFolders: Set<PasteboardFolder>, _ parentNode: Node, _ index: Int) -> NSDragOperation {
|
func validateLocalFoldersDrop(_ outlineView: NSOutlineView, _ draggedFolders: Set<PasteboardFolder>, _ parentNode: Node, _ index: Int) -> NSDragOperation {
|
||||||
|
@ -312,7 +321,7 @@ private extension SidebarOutlineDataSource {
|
||||||
if index != NSOutlineViewDropOnItemIndex {
|
if index != NSOutlineViewDropOnItemIndex {
|
||||||
outlineView.setDropItem(parentNode, dropChildIndex: NSOutlineViewDropOnItemIndex)
|
outlineView.setDropItem(parentNode, dropChildIndex: NSOutlineViewDropOnItemIndex)
|
||||||
}
|
}
|
||||||
return localDragOperation()
|
return localDragOperation(parentNode: parentNode)
|
||||||
}
|
}
|
||||||
|
|
||||||
func copyWebFeedInAccount(node: Node, to parentNode: Node) {
|
func copyWebFeedInAccount(node: Node, to parentNode: Node) {
|
||||||
|
@ -445,9 +454,9 @@ private extension SidebarOutlineDataSource {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if NSApplication.shared.currentEvent?.modifierFlags.contains(.option) ?? false {
|
if NSApplication.shared.currentEvent?.modifierFlags.contains(.option) ?? false {
|
||||||
copyWebFeedBetweenAccounts(node: node, to: parentNode)
|
|
||||||
} else {
|
|
||||||
moveWebFeedBetweenAccounts(node: node, to: parentNode)
|
moveWebFeedBetweenAccounts(node: node, to: parentNode)
|
||||||
|
} else {
|
||||||
|
copyWebFeedBetweenAccounts(node: node, to: parentNode)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -571,9 +580,9 @@ private extension SidebarOutlineDataSource {
|
||||||
draggedNodes.forEach { node in
|
draggedNodes.forEach { node in
|
||||||
if !sameAccount(node, parentNode) {
|
if !sameAccount(node, parentNode) {
|
||||||
if NSApplication.shared.currentEvent?.modifierFlags.contains(.option) ?? false {
|
if NSApplication.shared.currentEvent?.modifierFlags.contains(.option) ?? false {
|
||||||
copyFolderBetweenAccounts(node: node, to: parentNode)
|
|
||||||
} else {
|
|
||||||
moveFolderBetweenAccounts(node: node, to: parentNode)
|
moveFolderBetweenAccounts(node: node, to: parentNode)
|
||||||
|
} else {
|
||||||
|
copyFolderBetweenAccounts(node: node, to: parentNode)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue