ポップアップの躾

ポップアップの挙動をコーディングするのは意外に難しい。

今出回っているThousandではリンクにポインタが乗ると即座にポップアップし、離れると即座にそれを消してしまう。これでは、使っていると例えばリンクを避けるようにポインタを移動したり、ポップアップしたあとポップアップウィンドウにポインタを移そうとするとリンクから離れるので消えてしまったりと不便なことがある。そこで新版では、この挙動に微妙な遅れをつけている。こうすると不意にかすったポインタにはポップアップしないし、リンクから離れても遅れの間にポップアップウィンドウにポインタが乗ればポップアップは維持される。

またポップアップには微妙な親子関係が存在する。ポップアップの中でさらにポップアップした場合、後のポップアップからポインタが離れて消える時には元のポップアップも道連れにしなければならない。つまりポップアップは最低でも自分の親を知っていなければならない。

そして新版ではスレッド表示、ポップアップ共にT2ThreadViewを使う。T2ThreadViewは最低限スレッドのURLさえあればスレッド表示を行える、WebViewのサブクラスだが、コンテキストメニューやスレッドの読み込みなんかを通知するのにデリゲートを持つ。もちろん本体のT2ThreadViewと、そこからリクエストされたポップアップウィンドウのT2ThreadViewは同じデリゲートを共有しなければならない。とするとこっちにも親子関係を導入しなければならなくなる。

で、この2つの親子関係をまとめて一つにし、ディレイを突っ込んだものを今日作成して、またいろいろ気に喰わない動作をするので躾けているところです。Thousandスレでも書いたようにほぼ新造なので、ビルドしたの今日が初めて。MacBook速い。