BathyScaphe ネタ(その18)

開発中に何か困ったとき、google で調べると、たいてい同じようなことで悩んでいるケースが見つかる。ただし、解決方法があるかどうかはまちまちだ。

ドロップのハイライトMail風味

Mail、あるいはiTunesでもそうだが、ソースリストに項目をドラッグしたときのハイライトが鮮やかで、綺麗で、わかりやすい。


ところが、我々にはそのようなハイライトが与えられていない。我々に与えられるのは、そっけない黒い枠だけなのだ。


美しいハイライトはどのように実現されているのか、そしてどうすれば我々も手に入れることができるのか。探してみると他にもそのようなことを考えている人がやはりいる。

どうやら非公開メソッドをオーバーライドすれば一発なのだが、やっぱり気が引けるよねぇという話のようだ。私も気が引けるので、あきらめた。将来 NSTableView にそれなりのメソッドが追加されることに期待したい。

ツールバー・イン・ザ・シート

昨日はちょっと色気を出して、ツールバーをシートに配置してみたんだ。Pages とか、iMovie とかでそのような「ツールバー(っぽいの)が付いているシート」を見かけるので、やってみようと思った訳だ。


シートだって普通の NSWindow だから、実装は通常のツールバーと全然変わらず、あっさりと済んだ。
ところが、いざリリースしてみると 10.3.9 ユーザから「表示がおかしい」との報告だ。ぎゃーす!!スクリーンショットを見ると、ツールバーの位置が下がって、下に食い込んでいる。
困ったなぁと思って探してみると、どうやらバグらしい。ぽろぽろと類似のケースが出てきた。

最初のページでは、「バグのせいでシートの位置がずれる。補正できないことはないがちょっとカッコ悪くなる。iMovie のアレはフェイクのツールバーで NSToolbar じゃないね。実際、フェイクのツールバーを配置する方が良いと思うよ」みたいな話になっている。次のページでは、「シートがウインドウにくっついてからツールバーの -setVisible: を YES にするとうまくいくわ」みたいな話だ(私は試していない)。
実際、NSWindow のデリゲートメソッド -window:willPositionSheet:usingRect: を使ってシートの位置を強制的に補正してやる方法も考えたんだけど、まぁ今回はいろいろ無理をしてまでツールバーで切り替える方式にこだわる必要もない。手堅く他の方法(NSTabView とか)に変えておく方が良さそうだ。ちょっと残念だが、ツールバーをシートに置くのは、またの機会にしよう…