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

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』のコールバックに関する説明を参照してください。

left-word(extend)

XmNeditPolicyXmEDIT_LOGICAL で、引数なしで呼び出された場合、挿入カーソルがワードの論理的開始位置にあれば、挿入カーソルは 1 つ前の論理ワードの開始位置に移動します。1 つ前の論理ワードが存在しない場合には、挿入カーソルの位置は変化しません。ワード内の、ワードの論理的な先頭以外に挿入カーソルが位置している場合には、挿入カーソルはワードの論理的開始位置に移動します。挿入カーソルが行の論理的開始位置にある場合、挿入カーソルを 1 つ前の行の論理的な最後のワードの始点に移動します。1 つ前の行が存在しない場合には、挿入カーソルの位置は変化しません。

XmNeditPolicyXmEDIT_VISUAL で、引数なしで left-word() が呼び出されると、左側または行の先頭以降の最初の白い空白文字の後の、白以外の最初の空白文字に挿入カーソルを移動します。挿入カーソルがすでにワードの先頭に位置している場合、1 つ前のワードの先頭に挿入カーソルを移動します。挿入カーソルがすでに行の先頭にある場合、1 つ前の行の最後のワードの先頭に移動します。

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

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

right-character(extend)

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

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

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

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

right-word(extend)

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

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

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

right-word() の動作は、reason の値として XmCR_MOVING_INSERT_CURSOR を用いて XmNmotionVerifyCallback プロシージャを呼び出します。extend 引数を指定して left-word() が呼び出される場合、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_LOGICAL ならば、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 プロシージャを呼び出します。

delete-left-word()

XmNeditPolicyXmEDIT_VISUAL ならば、delete-prev-word() が引数なしで呼び出された場合と同じです。XmNeditPolicyXmEDIT_LOGICAL ならば次のようになります。すなわち、通常モードで範囲が選択されている場合は、選択された部分が削除されます。範囲が選択されていない場合は、挿入カーソルの左側の文字から次の空白文字、句読点、タブ、または行頭の文字まで削除されます。追加モードで、選択されている範囲がある場合は、カーソルは選択範囲から切り離されず、XmNpendingDelete が True に設定され、選択された部分が削除されます。範囲が選択されていない場合は、挿入カーソルの左側の文字から次の空白文字、句読点、タブ、または行頭の文字までが削除されます。結果が選択内容に影響を与える場合があります。

delete-right-word()

XmNeditPolicyXmEDIT_VISUAL ならば、kill-right-word() と同じです。XmNeditPolicyXmEDIT_LOGICAL ならば次のようになります。すなわち、通常モードで範囲が選択されている場合は、選択された部分が削除されます。範囲が選択されていない場合は、挿入カーソルの右側の文字から次の空白文字、句読点、タブ、または行末の文字まで削除されます。追加モードで、選択されている範囲がある場合は、カーソルは選択範囲から切り離されず、XmNpendingDelete が True に設定され、選択された部分が削除されます。範囲が選択されていない場合は、挿入カーソルの右側の文字から次の空白文字、句読点、タブ、または行末の文字まで削除されます。結果が選択内容に影響を与える場合があります。

kill-left-character()

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

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

kill-right-character()

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

kill-right-character() の動作は、reason の値として XmCR_MODIFYING_TEXT_VALUE を用いて XmNmotionVerifyCallback プロシージャを呼び出します。さらに、reason の値として XmCR_VALUE_CHANGED を用いて XmNvalueChangedCallback プロシージャを呼び出します。

kill-left-word()

XmNeditPolicyXmEDIT_VISUAL ならば、delete-prev-word() と同じです。XmNeditPolicyXmEDIT_LOGICAL ならば次のようになります。すなわち、通常モードで範囲が選択されている場合は、選択された部分が削除されます。範囲が選択されていない場合は、挿入カーソルの左側の文字から次の空白文字、句読点、タブ、または行頭の文字まで削除されます。追加モードで、選択されている範囲がある場合は、カーソルは選択範囲から切り離されません。範囲が選択されていない場合は、挿入カーソルの左側の文字から次の空白文字、句読点、タブ、または行頭の文字までが削除され、削除された内容がカットバッファに保存されます。結果が選択内容に影響を与える場合があります。

kill-right-word()

XmNeditPolicyXmEDIT_VISUAL ならば、delete-right-word() と同じです。XmNeditPolicyXmEDIT_LOGICAL ならば次のようになります。すなわち、通常モードで範囲が選択されている場合は、選択された部分が削除されます。範囲が選択されていない場合は、挿入カーソルの右側の文字から次の空白文字、句読点、タブ、または行末の文字まで削除されます。追加モードで、選択されている範囲がある場合は、カーソルは選択範囲から切り離されません。XmNpendingDelete が True に設定され、選択された部分が削除されます。範囲が選択されていない場合は、挿入カーソルの右側の文字から次の空白文字、句読点、タブ、または行末の文字までが削除され、削除された内容がカットバッファに保存されます。結果が選択内容に影響を与える場合があります。

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

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

prev-cell(extend)

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

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

forward-cell(extend)

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

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