簡易レスポップアップ
gtk.WINDOW_POPUPを使う。 この中にThreadViewを入れてあげる。 表示について アンカー(>>1 的なやつ)の上にポインターが来たら出す。 motion-notify-eventで捕まえる。 位置はポインターの近く。 既に表示しているpopupがある場合は何もしない。 popupを消すタイミングはタイマーを使う。 100msごとにポインターの位置を調べる。 ポインターがpopupの上にある場合は何もせず、タイマー続行。 ポインターがpopup元のアンカーの上にある場合も何もせず、タイマー続行。 それ以外はpopupを破壊して、タイマーを止める。 タイマーはgobject.timeout_addで良い。 ポインターの位置はWidgetのget_pointer methodで取得。 GDK Windowのget_origin methodから座標変換してPopupの位置を指定。
表示するタイミングはカーソルがアンカーの上にきたとき。 既にそのアンカーからポップアップが表示されている場合は何もしない。
タイマーを使ってカーソルの位置をトラッキング。このタイマーのコールバックでポップアップを消す。以下がポップアップを消す条件。
タイマーを止めるのはポップアップが全て消えたとき。
ポップアップに入れるThreadViewはThreadWindowで使っているものと同じものを用いる。 ThreadWindowのThreadViewのResLayoutをcloneして使う。Elementをcopy.copyする。 ElementTextは横幅に応じた折り返し情報を持つため、同じオブジェクトは使ってはならない。
ポップアップが画面からはみ出ないようにしたい。
幅300で固定、縦は200以下になるようにした。
基本的にカーソルの右下、画面からはみ出す場合は左に出したり上に出したりする。
文字がない行はカット。
v0.2ではあったけどその後消えたレスポップアップ。そのうちやる。