ページ

2007年8月24日金曜日

ドラッグ、ドラッグ

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

Safariや他のアプリでやっているように画像をドラッグした時に:


 1. ウィンドウ内であれば移動とし、必要ならスクロールさせる
 2. ウィンドウ外であれば他のウィンドウへのコピーとする

ような動作をさせたい。


NSView の dragImage:at:offset:event:pasteboard:source:slideBack: を使うと 2 は簡単に実現できるのだが、1 はできるのだろうか。


Safari の動作を見ると次のようになっていた。

 a 表示画像をマウスでつかんでドラッグする。
  画面の端何ピクセルかの幅へ持っていくとスクロールされる。

 b 画面端でもたもたしないで、サッとウィンドウの外へ動かすとスクロールが起こらない。

 c ウィンドウズの外へドラッグすると、他ウィンドウへのコピーとなる。


感覚的な動作なのでアプリを作る時はこれをまねるべきだろう。ただ作るとなると面倒だな。

一方、Excelを見ると違うアプローチを取っていた。a, b は同じだが c のように外へは出ない。他のウィンドウへコピーするには Opt キーを押しながらドラッグする必要がある。こちらだと実装は楽だな。

スクラップブック的な観点からすると他ウィンドウへのコピーで Optキーが不要な Safariの方が使い勝手良い。
やはり面倒でもSafari方式にすべきか。うーん。