国際化対応言語環境の利用ガイド

XmText 動作ルーチン

XmText の動作ルーチンを以下に示します。

left-character(extend)

XmNeditPolicyXmEDIT_LOGICAL で、引数なしで呼び出された場合、挿入カーソルは 1 論理文字分だけ前に移動します。挿入カーソルが行の先頭にある場合、1 つ前の行があればその行の最後の論理文字に移動します。1 つ前の行が存在しない場合には、カーソル位置は変化しません。

XmNeditPolicyXmEDIT_VISUAL ならば、カーソルは 1 つ左に移動します。挿入カーソルが行の先頭にある場合、1 つ前の行があればその行の最後の論理文字に移動します。

extend 引数を指定して left-character() が呼び出されると、現在の選択範囲を延長させながら、引数なしの場合と同じように挿入カーソルを移動します。

left-character() 動作は、reason の値として XmCR_MOVING_INSERT_CURSOR を用いて XmNmotionVerifyCallback プロシージャを呼び出します。また、extend 引数を指定して呼び出された場合、この動作により XmNgainPrimaryCallback プロシージャへの呼び出しが発生する場合があります。詳細については、『Motif Programmer's Reference』のコールバックに関する説明を参照してください。

right-character(extend)

XmNeditPolicyXmEDIT_LOGICAL で、引数なしで呼び出された場合、挿入カーソルは 1 論理文字分だけ次に移動します。挿入カーソルが行の論理的な最後尾にある場合、次の行があればその行の論理的な先頭に挿入カーソルを移動します。

XmNeditPolicyXmEDIT_VISUAL ならば、カーソルは 1 つ右に移動します。挿入カーソルが行末にある場合、次の行があればその行の先頭に移動します。

extend 引数を指定して 呼び出された場合、XmNeditPolicy は、現在の選択範囲を延長させながら、引数なしの場合と同じように挿入カーソルを移動します。

right-character() 動作は、reason の値として XmCR_MOVING_INSERT_CURSOR を用いて XmNmotionVerifyCallback プロシージャを呼び出します。また、extend 引数を指定して呼び出された場合、この動作により XmNgainPrimaryCallback プロシージャへの呼び出しが発生する場合があります。詳細については、『Motif Programmer's Reference』のコールバックに関する説明を参照してください。

right-word(extend)

XmNeditPolicyXmEDIT_LOGICAL で、引数なしで呼び出された場合、挿入カーソルは次の論理ワードの開始位置に移動します。次の論理ワードが存在しない場合には、現在のワードの論理的な最後尾に挿入カーソルを移動します。挿入カーソルが行の論理的な最後尾にあるか、行の論理的な最後のワード内にある場合、挿入カーソルは次の行の論理的な先頭ワードに移動します。次の行が存在しない場合には、現在のワードの論理的な最後尾に挿入カーソルを移動します。

XmNeditPolicyXmEDIT_VISUAL で、right-word() が引数なしで呼び出された場合、右側または行末以降の最初の白い空白文字の後の、白以外の最初の空白文字に挿入カーソルを移動します。

extend 引数を指定して 呼び出された場合、現在の選択範囲を延長させながら、引数なしの場合と同じように挿入カーソルを移動します。

left-character() 動作は、reason の値として XmCR_MOVING_INSERT_CURSOR を用いて XmNmotionVerifyCallback プロシージャを呼び出します。また、extend 引数を指定して呼び出された場合、この動作により XmNgainPrimaryCallback プロシージャへの呼び出しが発生する場合があります。詳細については、『Motif Programmer's Reference』のコールバックに関する説明を参照してください。

delete-left-character()

XmNeditPolicyXmEDIT_LOGICAL ならば、delete-previous-char() と同じです。XmNeditPolicyXmEDIT_VISUAL ならば、次のようになります。すなわち、通常モードで範囲が選択されている場合は、選択された部分が削除されます。範囲が選択されていない場合は、この動作により、挿入カーソルの左側の 1 文字が削除されます。追加モードで、選択されている範囲がある場合は、カーソルは選択範囲から切り離されず、XmNpendingDelete が True に設定され、選択された部分が削除されます。範囲が選択されていない場合は、挿入カーソルの左側の1 文字が削除されます。結果が選択内容に影響を与える場合があります。

delete-left-character() 動作は、reason の値として XmCR_MODIFYING_TEXT_VALUE を用いて XmNmodifyVerifyCallback プロシージャを呼び出します。また、 reason の値として XmCR_VALUE_CHANGED を用いて XmNvalueChangedCallback プロシージャを呼び出します。

delete-right-character()

XmNeditPolicyXmEDIT_VISUAL ならば、delete-next-character() と同じです。XmNeditPolicyXmEDIT_VISUAL ならば、次のようになります。すなわち、通常モードで範囲が選択されている場合は、選択された部分が削除されます。範囲が選択されていない場合は、挿入カーソルの右側の 1 文字が削除されます。追加モードで、選択されている範囲がある場合は、カーソルは選択範囲から切り離されず、XmNpendingDelete が True に設定され、選択された部分が削除されます。範囲が選択されていない場合は、挿入カーソルの右側の 1 文字が削除されます。この動作が選択内容に影響を与える場合があります。

delete-right-character() 動作は、reason の値として XmCR_MODIFYING_TEXT_VALUE を用いて XmNmodifyVerify-Callback プロシージャを呼び出します。また、reason の値として XmCR_VALUE_CHANGED を用いて XmNvalue-ChangedCallback プロシージャを呼び出します。

文字合成、合字、区別的発音符などをサポートするため、セルベースのルーチンが提供されています。つまり、1 個のプレゼンテーションセルを占有する 1 個のグリフを用いて、複数の文字を表すことができます。

XmText セルの動作ルーチンを以下に示します。

backward-cell(extend)

1 セル分、挿入カーソルを前に移動します。XmNeditPolicyXmEDIT_LOGICAL ならば、現在のセルよりも論理的に 1 つ前のセルの先頭に挿入カーソルが移動します。1 つ前のセルが存在しない場合には、挿入カーソルは現在のセルの先頭に移動します。

XmNeditPolicyXmEDIT_VISUAL ならば、カーソルはその左側のセルの先頭に移動します。prev-cell() 動作は、reason の値として XmCR_MOVING_INSERT_CURSOR を用いて XmNmotionVerifyCallback プロシージャを呼び出します。また、extend 引数を指定して呼び出された場合、この動作により XmNgainPrimaryCallback プロシージャへの呼び出しが発生する場合があります。詳細については、『Motif Programmer's Reference』のコールバックに関する説明を参照してください。

forward-cell(extend)

論理的な次のセルの始点に挿入カーソルを移動します。次のセルが存在しない場合には、現在のセルの最後尾にカーソルを移動します。XmNeditPolicyXmEDIT_LOGICAL ならば、次のセルにカーソルを移動します。

XmNeditPolicyXmEDIT_VISUAL ならば、カーソルはその右側のセルの先頭に移動します。右側にセルが存在しない場合、カーソルは現在のセルの最後尾に移動します。forward-cell() 動作は、reason の値として XmCR_MOVING_INSERT_CURSOR を用いて XmNmotionVerifyCallback プロシージャを呼び出します。また、extend 引数を指定して呼び出された場合、この動作により XmNgainPrimaryCallback プロシージャへの呼び出しが発生する場合があります。詳細については、『Motif Programmer's Reference』のコールバックに関する説明を参照してください。