NSOutlineView: горячая, чтобы избежать желтой границы при перетаскивании объектов?
Когда я перетаскиваю строки из NSTableView в другой NSOutlineView, NSOutlineView получает желтую границу выделения. Как мне избежать этого?
Точнее говоря, это происходит только в том случае, если я перетаскиваю строки из таблицы в свободное пространство (то есть не для каких-либо элементов) NSTableView. Однако, когда я перетаскиваю строки непосредственно на элементы в NSOutlineView, желтая рамка не отображается, но (конечно) элементы выбираются сами.
Важная часть outlineView:validateDrop:proposedItem:proposedChildIndex:
в источнике данных NSOutlineViews выглядит так:
- (NSDragOperation)outlineView:(NSOutlineView *)outlineView
validateDrop:(id <NSDraggingInfo>)info
proposedItem:(id)item
proposedChildIndex:(NSInteger)index
{
if ([info draggingSource] == myOtherTableView) {
[outlineView setDropItem:item
dropChildIndex:NSOutlineViewDropOnItemIndex];
return NSDragOperationMove;
}
return NSDragOperationNone;
}
Спасибо за любую помощь!
1 ответ
Когда NSOutlineView
предлагает сделать опускание не для какого-либо конкретного элемента (что приводит к выделению всей границы, которое вы видите), оно передается в виде item
ноль и proposedChildIndex
NSOutlineViewDropOnItemIndex. Вы можете проверить это, чтобы сказать, когда NSOutlineView
предлагает это падение и возврат NSDragOperationNone
вообще не допустить падения в этом регионе.
- (NSDragOperation)outlineView:(NSOutlineView *)outlineView
validateDrop:(id <NSDraggingInfo>)info
proposedItem:(id)item
proposedChildIndex:(NSInteger)index
{
if ([info draggingSource] == myOtherTableView) {
if (item == nil)
return NSDragOperationNone;
else
{
[outlineView setDropItem:item
dropChildIndex:NSOutlineViewDropOnItemIndex];
return NSDragOperationMove;
}
}
return NSDragOperationNone;
}