04/03/24 16:11.net
>>414
そんな複雑な話じゃないです。
ちょっと自分でも混乱してたので、以前書いたソースを眺めて整理しました。
コマンドラインオプションで -geometry -0-0 みたいな設定を許すとすると、
自前で左上の座標を計算して gtk_widget_set_uposition() に渡す必要があるよね。
これには、toplevel のウィンドウサイズを取得する必要がある。
けど、これが toplevel を realize した後じゃないと取得できないんですよ。なので、
gtk_signal_connect(GTK_OBJECT(toplevel), "configure_event",GTK_SIGNAL_FUNC(adjust), NULL);
とかして、adjust() の中で gdk_window_get_size() して gtk_widget_set_uposition() する
ことになります。
ここで、toplevel 以外の configure_event に引っかけるとダメで、このために
自分のコードはちょっと汚くなってしまった(これはまぁ実害はないので拘らないことにする)。
で、この方式だと、ウィンドウ出現時に一瞬だけ左上に出てきて、それから実際の場所に
移動させられます。遅いマシンだと結構気になるかも。
例えば、gtk_widget_realize() した時点でサイズを計算し、確定させておけば、
toplevel 以外を realize した状態で gdk_window_get_size() が使えていいんじゃないか、
と思うんですけど、これ、やっぱり技術的に実現困難な問題がある?
GTK+ のソース全部見てないので何とも言えないんだけど。