Мое приложение позволяет перетаскивать как в главное окно, так и в элемент состояния.
- Если я перетаскиваю файл из стеков в свое окно, оно отлично работает.
- Если яперетащите файл из Finder в мое окно, оно отлично работает.
- Если я перетаскиваю файл из Finder в свой элемент статуса, он отлично работает.
- Если я перетаскиваю файл из стека в свой элемент статуса, он не работает.
И окно, и элемент состояния используют один и тот же код обработки перетаскиванием.
Забавно, что при перетаскивании файла из стеков на элемент состояния курсор меняется, как и ожидалось, поскольку - (NSDragOperation) draggingEntered: (id) sender {NSPasteboard * pboard;NSDragOperation sourceDragMask; метод вызывается, как и ожидалось.
Однако, когда файл удаляется, - (BOOL) executeDragOperation: (id) sender {NSPasteboard * pboard;NSDragOperation sourceDragMask; метод НЕ вызывается.
Вот реализация первого метода:
- (NSDragOperation)draggingEntered:(id <NSDraggingInfo>)sender {
NSPasteboard *pboard;
NSDragOperation sourceDragMask;
sourceDragMask = [sender draggingSourceOperationMask];
pboard = [sender draggingPasteboard];
if ( [[pboard types] containsObject:NSColorPboardType] ) {
if (sourceDragMask & NSDragOperationGeneric) {
return NSDragOperationGeneric;
}
}
if ( [[pboard types] containsObject:NSFilenamesPboardType] ) {
if (sourceDragMask & NSDragOperationLink) {
return NSDragOperationLink;
} else if (sourceDragMask & NSDragOperationCopy) {
return NSDragOperationCopy;
}
}
return NSDragOperationNone;
}
Спасибо!