2006/05/15

アイコン化解除

Motifでアイコン化を解除するには、
Display *pDisplay = XtDisplay( シェルのウィジット );
Window window = XtWindow( シェルのウィジット );
XMapWindow( pDisplay, window );
とすればいいらしい。

ところが、この直後に
XSetInputFocus( pDisplay, window, RevertToParent, CurrentTime );
とすると、前と同じくBadMatchが生じる。

詳しいことは知らないが、どうやらXMapWindowの呼び出しが処理される前にXSetInputFocusが実行されるのが原因らしい。

とりあえずXmUpdateDisplayという、溜まっているイベントを先に片づけさせる関数を呼んでやると、うまくいくようだ。

つまり、結果としては
Display *pDisplay = XtDisplay( シェルのウィジット );
Window window = XtWindow( シェルのウィジット );
XMapWindow( pDisplay, window );
XmUpdateDisplay( シェルのウィジット );
XSetInputFocus( pDisplay, window, RevertToParent, CurrentTime );
となるらしい。

とりあえず、覚え書き程度に。

0 件のコメント: