-(NSDragOperation)tableView:(NSTableView*)aTableView validateDrop:(id)info proposedRow:(NSInteger)row proposedDropOperation:(NSTableViewDropOperation)dropOperation
ですな。
DirectoryFile* item=[fileArray objectAtIndex:row]; if([item isDirectory]) [aTableView setDropRow:row dropOperation:NSTableViewDropOn]; else [aTableView setDropRow:row dropOperation:NSTableViewDropAbove]; if ([info draggingSource] == tableView) { return NSDragOperationMove; } else{ return NSDragOperationCopy; } return NSDragOperationEvery;プロポーズされた行がディレクトリならNSTableViewDropOn、そうでないならNSTableViewDropAboveとしてやるだけで、
NSTableViewDropOn
NSTableViewDropAbove
ついでに同じディレクトリ内のDropならNSDragOperationMove、他のディレクトリならNSDragOperationCopyとしておくと、Copyの時はカーソルのわきに緑の「+」マークがつく。さすがにSimpleCapでもキャプチャできなかったけど。
ただ、コピーか移動かの選択はいちいちダイアログを出して確認する仕様にするつもりなので、見た目の派手さをとって全部NSDragOperationCopyにしておくという手もあるな。
いちいちダイアログ、というのは面倒なように見える。が、マウス派にとってにはけっこう重宝する手法で、移動は⌘キーだっけoptionキーだっけ、とキーボード上で指を彷徨わせる必要がなくなる。(^^;)
なによりも、とりあえずDropしてから移動かコピーを選ぶというのは安心感がある。何をかくそう、Windows上で長年愛用しているファイラ「まめFile」がこの仕様。このソフトのおかげでエクスプローラは全く使わなくて済んでいる。OSXではFinderがよくできているためか、手になじむFileManagerがなかなかみつからない。よさそうなのはたいていシェアウェアのようだし。
というわけで自分用FileManagerは当然「まめFie」の動作を一部まねしている。本当にまねしたいのはXFaceの「Thunar」なんだけど。
0 件のコメント:
コメントを投稿