tarosukeの日記: [talos] focusの処理(めも)
日記 by
tarosuke
focus関連で2つのポインタを用意。
1.focusそのもの
2.カーソルが居たPANE
A.1も2もPANEのデストラクタでdesktop.Defocusすることで無効ポインタを避ける。
B.desktop.AtMouseMoveでAtMouseMoveを再帰呼び出しして2を書き換えるが、書き換え前にLeave、書き換え後にEnterを投げる。
C.キー関係のイベントはfocusなPANEにだけ投げて、focusが無効なら捨てる。ただしその場合desktop自体はキーイベントを受け取るかも知れない。
どちらにせよAtHogeが戻ってからOnHogeするのでイベントを末端からカスケード的に適用することはなく、オーナー側ではなく各アイテム側にコードを置く必要があるのがMacや窓とは違うところ。ちょっと堅苦しいがそんなに困らんだろうと思う。というかそもそもユーザプロセスで好き勝手なUIを組ませない&UI自体をあんまり組ませない、変なUIへの要求はバッサリ却下するのがtalosのポリシーだし。
[talos] focusの処理(めも) More ログイン