XtCreateSelectionRequest(3) MULTIPLE target を用いて、複数のセレクション変換リクエストを1つのリクエストにまとめる

Other Alias

XtSendSelectionRequest, XtCancelSelectionRequest

書式

void XtCreateSelectionRequest(requestor, selection)

      Widget requestor;

      Atom selection;

void XtSendSelectionRequest(requestor, selection, time)

      Widget requestor;

      Atom selection;

      Time time;

void XtCancelSelectionRequest(requestor, selection)

      Widget requestor;

      Atom selection;

引き数

requestor
リクエストを出すウィジェットを指定する。 Core クラスあるいはそのサブクラスでなければならない。
selection
必要な特定のセレクションを指定する。
time
リクエストを出す際に使うタイムスタンプを指定する。

説明

XtCreateSelectionRequest が呼ばれたとき、これに続いて行われた XtCreateSelectionRequest に対して指定されたリクエスタやセレクションを使った XtGetSelectionValueXtGetSelectionValueIncremental の呼び出しは、複数の対象を持つ1つのセレクション変換リクエストにまとめ られる。このリクエストは実際には、 XtSendSelectionRequest を呼ぶことで作られる。

XtSendSelectionRequest が前の XtCreateSelectionRequest の呼び出しに一致する requestorselection の値を使って呼 ばれたとき、セレクション変換リクエストは実際にはセレクションの所有者に 送られる。 1つの対象となるリクエストがキューに入れられた場合には、このリクエスト が実行される。複数のリクエストがキューに入れられた場合には、これらのリ クエストは、指定したタイムスタンプを用いて対象が MULTIPLE である 1 つ のリクエストにまとめられる。変換が行われるとき、それぞれの XtGetSelectionValueXtGetSelectionValueIncremental に対応するコールバックは、順番に呼び出される。

マルチスレッドのアプリケーションは、 XtCreateSelectionRequest を呼ぶ前にアプリケーションコンテクストをロックしなければならず、 XtSendSelectionRequest を呼んだ後にはロックを解除しなければならない。これはリクエストを組み立 てたスレッドが、同じウィジェットとセレクションを指定して別のリクエスト を組み立てた他のスレッドの干渉から安全であることを保証するためである。

XtCancelSelectionRequest が呼ばれたとき、最後に XtCreateSelectionRequest が呼ばれて以降キューに入ったリクエストは全て消される。これ以降の XtGetSelectionValue, XtGetSelectionValues, XtGetSelectionValueIncremental, XtGetSelectionValuesIncremental の呼び出しが延期されることはない。