[ 前のページ ] [ 次のページ ] [ 目次 ] [ 索引 ]
本リリース・ノートは,OSF/Motif Release Note for Release 1.2の第3 章を基にしており,OSF/Motifアプリケーションを開発するプログラマ向けのその他いくつかの注意事項も記載しています。 注意事項の大部分はOSF/Motif リリース1.2への変更についての説明です。最初の2つの注意事項では, 性能向上と上位の互換性について説明します。
Open Software Foundation社の目標は,OSF/Motifリリース1.2の性能を可能な限り向上させ, 性能を最低でもOSF/Motifリリース1.1以下にはさせないことです。
性能テストが以下の3つの分野で行なわれました。
ダイアログ・ボックスやポップアップ・メニューの表示や消去のような, ユーザがすぐ気付くイベントの性能は,OSF/Motifリリース1.1.4の性能と匹敵するかあるいはそれ以上になっています。 大量のテストを行なった結果, スクロール・テキスト領域内のスクロールが大幅に改善されています。
データ・スペースの使用量については,OSF/Motifツールキット全体を通じて, 特にテキスト・ウィジェットで改善されています。一部のケースでは, データ・スペース使用量は40%も節減されています。またテキスト・ ウィジェットでテキストに使われるメモリは,テキストがより少量のテキストに置き換えられたときは, 正しく減らされるようになりました。
メモリ・リークは,ツールキット全部のウィジェットで生成と破壊を複数回行なっても, 最低限に抑えられるようになりました。Motifテストでは, わずかなメモリ・リークがありましたが,OSFでは,この程度の量のメモリは起動オーバーヘッドの一部として必要なもので, 本当のメモリ・ リークではないと考えています。
しかしOSFでは実際に若干のメモリ・リークを発見しており,将来のリリースでは修正する予定です。 例えば,File Selection Box,Command, Drawn Buttonの3つのウィジェットに,約500バイトのメモリ・リークがあります。
OSFでは,OSF/Motifリリース1.2のリンク時間の互換性,表示と動作の面での互換性についてテストしました。
OSFでは,自動化されたテストを行って,現在の表示とOSF/Motifリリース1.1.4 ライブラリを使用して記録されたものとを比較しました。リリース1.2 とリリース1.1.4バージョンとの間の違いが解明されてから,表示はリリース1.2 表示を使用して記録され, この新しく記録された表示がその後のテストで使用されました。
OSFの見解ではMotifリリース1.2は,表示的にも動作的にもリリース1.1.4 との互換性があります。ただしOSFは,Traversal and Geometry Management(移動・外形管理)アルゴリズムに大幅な改善を加えたため, 両バージョンに違いがでてきています。こうした違いには,以前のリリースでの欠陥を正そうとする努力が反映されています。
このような新しい改善方針のひとつの例として,アプリケーションのマネージャ・ ウィジェットの初期サイズ設定が,ツールキットで完全なものになっていることがあげられます。OSF/Motif リリース1.1では,アプリケーションがマネージャ・ ウィジェットのために初期サイズを設定しましたが, 実際にはこのサイズを使いませんでした。現在のリリース1.2では, Motifはこのサイズ設定を使い,これに対応して初期レイアウトが変更されるようになっています。
本セクションでは,OSFがOSF/Motifリリース1.2に加えた変更と新機能について要約します。 変更についてさらに詳しくは,Motifの参照ページと, 下記のMotifリリース1.2改訂版を参照してください。
以下の各セクションでは,OSF/Motifリリース1.2で改善された点について論じます。
本セクションでは,OSF/Motifリリース1.2ツールキット全体に加えられた変更について説明します。
OSF/Motifリリース1.1にあった下記の各ヘッダ・ファイルは,リリース1.2 では廃止されています。
新しい共用ヘッダ・ファイルXmAll.hがOSF/Motifリリース1.2
に加えられています。このヘッダ・ファイルは,すべてのドキュメント化ヘッダ・
ファイルを含みます。
caddr_tへの参照がすべてXtPointerに変更されました。
この変更は,caddr_tを参照するすべてのコールバック・
ルーチンやその他のルーチンに影響します。OSFがこの変更をしたのは,OSF/Motif
リリース1.2が,ANSI C仕様に準拠するようにするためです。
Motifには,各表示ごとにデータとリソースをサポートする
XmDisplayオブジェクトが加わりました。また各画面ごとにデータとリソースをサポートする
XmScreenオブジェクトも加えられています。
OSF/Motifリリース1.2では,データ交換用に「ドラッグ・ドロップ」メタファーをサポートしており, 「ドラッグ・ドロップ」仕様はフルに実現されています。 「ドラッグ・ドロップ」インタフェースについては,リリース1.2 バージョンの『OSF/Motifプログラマーズ・ガイド』を参照してください。
Btn2を使用すると,「ドラッグ・
ドロップ」は正しく機能しません。この場合,ドラッグ・ドロップを無効にしなければなりません。
ティア・オフ・メニューを使用すると,ユーザは,表示領域にメニューを保留しておいて次の選択を行うことができます。 個々のtearできる(引きはがせる)メニュー枠がティア・ オフ・ボタンとなっています。ティア・ オフ・ボタンでマウスのドラッグ・ボタンを押すと枠が引きはがされてドラッグでき, マウスのドラッグ・ボタンを離した場所に設置できます。ウィンドウ・ マネージャは,ティア・オフ・メニュー枠にメニュー・ボタンおよびタイトルを付けます。 ティア・オフされたメニューのウィンドウ枠へのフォーカスの移動は, 標準的なウィンドウ・マネージャの場合と同様です。
ティア・オフ動作は,XmNtearOffModelリソースを,
XmTEAR_OFF_ENABLEDに設定することで可能となります(
省略時設定はXmTEAR_OFF_DISABLED )。
XmNtearOffModelによってあらかじめ登録されているリソース・
コンバータがないことに注意してください。ティア・オフ機能をリソース・
データベースを通じてオンにできるよう,アプリケーションは,
XmRepTypeInstallTearOffModelConverter機能を使用して,
XmNtearOffModelリソース用のアプリケーション自身のリソース・
コンバータを登録しなければなりません。
コンバータが自動的にインストールされない理由は,メニュー内の項目の感度を動的に設定するために, 多くのアプリケーションがマップやカスケードするコールバックを使用しているからです。 ただしティア・オフ・メニューがマップされると, 他のアプリケーションの状態の変更を反映するよう, メニュー項目の感度を直ちに変更しなければなりません。既存のアプリケーションが, このようにメニュー項目の感度を変更することはないでしょう。 このため,メニューをティア・オフできるようにすると予期しない時に機能がオンとなることがあります。 ユーザがこれらのメニュー項目のひとつをアクティブ化すると, アプリケーションがクラッシュしたり, 不変データが損なわれることもあります。
Motifでは,構成要素がユーザからの入力に応答できるかどうかを示す表示が用意されています。 以前のMotifリリースではラベルやボタンがこの動作をしていました。OSF/Motif リリース1.2ではこの動作は次のウィジェットに拡大されています。
XmArrowButton
XmList
XmScrollBar
XmText
XmTextField
OSF/Motifリリース1.2では次の表示が変更されています。
XmScreenオブジェクトには,省略時設定のカラー生成を調整できるようにするリソースが入っています。
しきい値用の省略時の値の一部が,
カラー・モニター上でよりコントラストを出すために調整されています。
OSF/Motifリリース1.2では,FrameウィジェットでTitleウィジェットを指定できます。 リリース1.2には,Frame内のタイトルの位置と配置の指定のための次の新しい制約リソースが加えられています。
XmNchildHorizontalAlignment
XmNchildHorizontalSpacing
XmNchildType
XmNchildVerticalAlignment
VendorShellの新しいリソースXmNaudibleWarningでは,
警告メッセージに音をつけるかどうか指定できます。Textウィジェットが,
XmNaudibleWarningの値から,このリソース用の値を決定します。
次の3つのリソースがXmScreen ウィジェットに加えられました。
これはユーザが,省略時設定の背景色および影計算のためのしきい値を指定できるようにするためです。
XmNlightThreshold
XmNdarkThreshold
XmNforegroundThreshold
Motifには,指定のウィジェットの背景その他の色を変更する,
XmChangeColor機能が加えられています。
Motifは,ベース行の位置合せ用の2つの機能を加えました。
XmWidgetGetBaselines機能は,ウィジェットのテキスト・
ベース行の位置を決定します。また
XmWidgetGetDisplayRectは,ウィジェットの文字列用の境界ボックスのサイズと位置を決定します。
OSF/Motifリリース1.2で,キーボードを使用した移動(traverse)をサポートするウィジェットの数が増えました。 例えばタブ・グループ内でユーザは, 入れ子になったタブ・グループに含まれず,フォーカスを受ける資格をもつすべての派生制御に対して, たとえそれが直接の「子」ではない場合でも, 矢印キーを使用して移動できるようになりました。
OSF/Motifリリース1.2では,左右,上下方向の移動矢印がメニュー枠の内部で動き回れるようになりました。 上下方向の矢印キーがカラムの間をラップします。 左右方向の矢印キーは,メニュー枠でカラムの右端かまたは左端で押されると, それぞれ前かまたは次のメニュー枠を表示します。
OSF/Motifリリース1.2は,
ManagerクラスにXmNinitialFocus リソースを加えました。
このリソースは,入力フォーカスを受ける最初のウィジェットを指定します。
このリソースではウィジェットのみを指定でき,ポップアップメニュー,
メニュー・バー,オプション・メニュー,プルダウンメニューについてはすべて無視されます。
OSF/Motifリリース1.2は,キーボードによる移動との対話サポートを向上するために次の新しい機能を加えています。
XmGetFocusWidget
XmGetTabGroup
XmGetVisibility
XmIsTraversable
XmIsVisible
次のことを行なうためにXmTrackingLocate機能が変更されました。
さらに,XmTrackingEvent機能が加えられました。
この機能は,Xイベントに対してポインタを戻すこと以外は,
XmTrackingLocateに類似しています。
OSF/Motifリリース1.2では,XmTranslateKey機能を加えています。
これによってアプリケーションは,省略時
XtKeyProcをオーバーライドしてMotif仮想キーを扱うことができます。
Motifは,次の2つの新しい仮想keysymsを定義しています。
osfPageLeft
osfPageRight
これらの新しい仮想キーを使用するには,/usr/lib/X11にX11
リリース5 XKeysymDBをインストールしておかなければなりません。
インストールされていないと,アプリケーション起動時に警告メッセージが出ます。
XKeysymDB ファイルに次の情報を指定してください。
| osfPageLeft | :1004FF40 |
| osfPageUp | :1004FF41 |
| osfPageDown | :1004FF42 |
| osfPageRight | :1004FF43 |
OSF/Motifスタイル・ガイドに従うよう,osfMenuの省略時バインディングが,
<key>F4からShift<key>F10に変更されています。
X11リリース5では,XKeysymDBファイル中のHP
keysymsは,接頭語hpをつけています。しかしこの接頭語は,
/bindingsディレクトリのHPバインディング・ファイルには反映されません。X11
リリース5 XKeysymDBファイルを使用している場合には,
アプリケーション起動時に警告メッセージがでることがあります。
こうした警告メッセージを取り除くためには,次のようにファイルの該当する行に接頭語
hpを加えます。
osfDelete : |
<key>hpDeleteChar |
osfInsert : |
<key>hpInsertChar |
osfPrimaryPaste : |
<key>hpInsertLine |
osfQuickPaste : |
<key>hpDeleteLine |
OSF/Motifリリース1.2には,Motifアプリケーションが使用する仮想バインディングを設定する新しいクライアント
xmbindがあります。
仮想バインディングは,Motifウィンドウ・マネージャ(MWM)起動時に自動的に設定されるため,
xmbindを使用する必要があるのはMWM
が使われてない場合か,またはMWMを再起動しないで仮想バインディングを変更する必要がある場合だけです。
現在では仮想バインディングは,個々のベンダによって指定できるようになりました。
.motifbindファイルがホーム・ディレクトリにないときは,
xmbind.aliasファイルを使用して,サーバ・
ベンダ名からバインディング・ファイルへマッピングを提供できます。
ユーザのベンダ・バインディングとシステム全体のベンダ・バインディングも設定することもできます。
OSF/Motifリリース1.2には,表現タイプ管理用の次のような新しい機能があります。
XmRepTypeRegister
XmRepTypeAddReverse
XmRepTypeValidValue
XmRepTypeGetRegistered
XmRepTypeGetId
XmRepTypeGetNameList
XmRepTypeGetRecord
以上の機能は,列挙された値を使用する新しいリソース・コンバータの定義をしたい開発者にとって便利なものです。
OSF/Motifリリース1.2では,ReturnキーやosfActivate にバインドされているキー(
通常は数字キーパッド上のEnterキー)を使用しても,
メニューの外にあるボタンをアクティブ化できなくなりました。例えば,
このようなキーを押しても,「オプション」メユーをポップアップしたり,
ダイアログ・ボックスの切り替えボタンをアクティブ化したりしなくなりました。
アプリケーションにXmBulletinBoardに対応した省略時設定ボタンがある場合は,
フォーカスがXmBulletinBoardにあるときに,Return
キー(複数行XmTextで以外),Ctrl/Returnキー,
またはosfActivateにバインドされたキーを押すことによって,
省略時設定ボタンをアクティブ化できるようになりました。
本セクションでは,OSF/Motifリリース1.2で行なわれた特定のウィジェットに対する変更について要約します。
OSFは,XmClipboard機能パラメータにいくつかの修正を加えました。
これらの変更は,Motifの以前のリリースとのバイナリ互換性があります。
ただしアプリケーション再コンパイルの際に,
警告メッセージがでることがあります。この修正では,(char
*)がXtPointerに,intがlongに,
そして(int *) が(long *)にそれぞれ変更されました。
この修正によって,次の関連機能が影響を受けます。
XmClipboardCopy
XmClipboardCopyByName
XmClipboardInquireCount
XmClipboardInquireFormat
XmClipboardRegisterFormat
XmClipboardRetrieve
XmClipboardStartCopy
XmClipboardWithdrawFormat
OSF/Motif
リリース1.2で,XmCommandGetChildがXmDIALOG_
WORK_AREAを子引き数用の値として受け入れるようにするために,
XmCommandGetChildが修正されました。
リスト管理能力を高めるために,OSF/Motifリリース1.2に次の新しい機能が加えられました。
XmListAddItemsUnselected
XmListDeletePositions
XmListGetKbdItemPos
XmListIsPosSelected
XmListPosToBounds
XmListReplaceItemsUnselected
XmListReplaceItemsPosUnselected
XmListReplacePositions
XmListSetKbdItemPos
XmListUpdateSelectedList
XmListYToPos
XmListウィジェットに次の新しい翻訳が加わりました。
<Copy>
選択をclipboardにコピーします。
XmList に新しい動作が加わりました。
ListScrollCursorVertically()
入力率またはyポジションに基づいて,カーソルを縦にスクロールします。
ListScrollCursorVisibleと名前が付けられましたが,
今後のMotifのリリースでは訂正されます。
XmNvisibleItemCountリソースは,省略時の値が動的で,かつ項目カウントと高さに基づくよう修正されています。
OSF/Motifリリース1.2で,リストのselectedItemsおよび
selectedItemCountの各リソースがリソース・ファイルで設定されると,
位置カーソルがselectedItemsリストの最初の項目ではなく,
最後の項目の上に現われます。
OSF/Motifリリース1.2では,
MessageBoxは,MenuBar,ひとつ,作業領域ひとつ,
そして複数の子PushButtonの追加をサポートしています。
新しいダイアログ・タイプ
XmDIALOG_TEMPLATEは,Separatorひとつだけを含む
MessageBoxを生成します。アプリケーションが追加の子を用意します。
XmCreateTemplateDialogは,DialogShell内に
XmDIALOG_TEMPLATE XmMessageBoxを生成します。
OSF/Motifリリース1.2では,縦位置合せスタイルを指定する新しいリソース
XmNentryVerticalAlignmentが加わっています。
もうひとつのリソース
XmNunpostBehaviorが,XmScreenオブジェクトに加えられています。
このリソースを設定すれば,メニューを消去した後の外部ボタン・
イベントのリプレイをオンにできます。
OSF/Motifリリース1.2では,XmScrollBarに次の新しい翻訳が加わっています。
<Cancel>
現在のスライダ・ドラッグをキャンセルする。
OSF/Motifリリース1.2には,XmScrollVisible機能が加わっています。
これは自動的にスクロールされたウィンドウをスクロールして,
部分的または完全に隠れてしまったウィジェットを見えるようにする機能です。
もうひとつのリソースXmNtraverseObscuredCallbackも加わっています。
このリソースは,見えないウィジェットに移動イベントが要求されたときに呼び出されるコールバックのリストを指定します。
新しいコールバック構造
XmTraverseObscuredCallbackStructがこのコールバックをサポートするために加えられました。
OSF/Motifリリース1.2の,XmSelectionBoxウィジェットおよび
XmFileSelectionBoxウィジェットは,
子MenuBar と子PushButton ,子作業領域の追加をサポートしています。
新しいリソースXmNchildPlacementが子作業領域の位置を制御します。
XmDIALOG_TEMPLATEの値が,XmNdialogTypeリソースに加えられました。
省略時設定では,XmSelectionBoxDialogとそのサブクラスは,
XmTextではなくXmTextFieldを使います。
アプリケーションがXmSelectionBoxまたはそのサブクラスのいずれかを作成するときに,
USE_TEXT_IN_DIALOGSを定義すれば以前の動作に復帰できます。
OSF/Motifリリース1.2には,ウィジェットを更新変更するための2つの機能が
XmText に加わりました。これはXmTextDisableRedisplayとXmTextEnableRedisplayです。
さらに2つの機能,XmTextFindStringおよび
XmTextGetSubstringにより,文字列がさらに操作しやすくなっています。
リリース1.2では,行き先カーソルは挿入カーソルに従うようになっており, 独立しては動かせなくなりました。
XmTextには3つの新しい翻訳があります。
<Backspace>
ヌル以外のあらゆる1次選択を削除します。
<Delete>
ヌル以外のあらゆる1次選択を削除します。
<LeaveWindow>
時間遅延の後,選択動作をスクローリングによって続けます。
XmTextには次の2つの新しい動作があります。
scroll-cursor-vertically()
yポジションに基づいてカーソルを縦にスクロールします。
toggle-overstrike()
挿入と重ね打ちモードの間で切り替えます。
XmTextおよび
XmTextFieldには問題が起こる可能性があります。文字上端がフォントの上に突き出るような文字を含んだフォントまたはフォント・
セットで,文字列を表現する時です。このような文字を含んだテキストが強調表示されると,
前の行の文字の下に突き出た部分が次の行の文字の上端(突き出た部分)とオーバラップし,
オーバーライトされてしまうことがあります。
OSF/Motifリリース1.2のXmTextField ウィジェットには新しいリソース
XmNfocusCallbackがあります。このリソースは,
ウィジェットが入力フォーカスを受け入れるときに呼び出されるコールバックを指定します。
もうひとつの新しい機能XmTextFieldGetSubstringは,長さによってサブ文字列をウィジェットから取り出します。
リリース1.2では,行先カーソルは挿入カーソルに従うようになり,独立しては動かせなくなりました。
XmTextFieldには2つの新しい翻訳があります。
<Backspace>
ヌル以外のあらゆる1次選択を削除する。
<Delete>
ヌル以外のあらゆる1次選択を削除する。
OSF/Motifリリース1.2では,XmNindicatorOnが偽のときに
XmNfillOnSelectを真に設定すると,
XmToggleButtonセットの背景を
XmNselectColorで満たすようになっています。
XmNfillOnSelectの省略時設定値は,
XmNindicatorOnの状態に適合するような動的な値です。
本セクションでは,Motifウィンドウ・マネージャ(MWM)に行なわれた改良について要約します。
OSF/Motifリリース1.2では,MWMに次の改良が加えられています。
.mwmrc ファイル
.mwmrcファイルの<Return>継続文字(\)
のサポート
XBMLANGPATHによるビットマップ・ファイルでの検索能力
mwm メニューのポップダウンおよびイベント・
リプレイ動作のサポート
mwmで使われるウィジェット名の文書化
<Alt>および<Meta>キー変更子を2
つの別個の変更子として取り扱うようサポート
SHAPE 非長方形ウィンドウ拡張のサポート
OSF/Motifリリース1.2ウィンドウ・マネージャには,次の新規または改良されたリソースが含まれています。
feedbackGeometry
移動/サイズ変更・フィードバック・ウィンドウの位置を設定します。 省略時の位置は画面の中央です。
frameBorderWidth
省略時の値が画面のサイズと解像度に基づくようになりました。
iconPlacement
各アイコン間にギャップをおかずに並べる自動アイコン配置を指定する
tightの値が追加されました。
maximumClientSize
verticalおよびhorizontalの値を取れるようになりました。
moveOpaque
ウィンドウのイメージかそれともウィンドウのアウトラインだけを移動するかを制御します。
resizeBorderWidth
省略時の値が画面のサイズと解像度に基づくようになりました。
usePPosition
プログラムに指定されたポジションを使用するかどうか制御するために,
on,offかnonzeroの値を使います。
OSF/Motifリリース1.2には,新規および改良された次のMWM機能があります。
f.lower
アプリケーションのスタック順序の中でウィンドウを動かすための
within 引き数が含まれていますが,親ウィンドウが子の下というルールを保持しています。
この機能はまた,
freeFamily引き数も含んでいます。これは局所ファミリー・
スタックとは完全に無関係に,ウィンドウを移動させるためのものです。
両方の変更子とも局所ファミリー・スタックの中でウィンドウを移動させますが,
ファミリー・スタックは動かしません。
f.minimize
アイコン・ボックス内のアイコンから使用することができるようになりました。
f.raise
アプリケーションのスタック順序の中でウィンドウを動かすための
within 引き数を含んでいますが,親ウィンドウが子の下というルールは保持しています。
この機能はまた,
freeFamily引き数も含んでいます。これは局所ファミリースタックとは完全に無関係に,
ウィンドウを移動させるためものです。
両方の変更子とも局所ファミリー・スタックの中でウィンドウを移動させますが,
ファミリー・スタックは動かしません。
f.raise_lower
アプリケーションのスタック順序の中でウィンドウを動かすための
within 引き数を含んでいますが,親ウィンドウが子の下というルールは保持しています。
この機能はまた,
freeFamily引き数も含んでいます。これは,局所ファミリー・
スタックとは完全に無関係に,ウィンドウを移動させるためのものです。
両方の変更子とも局所ファミリースタックの中でウィンドウを移動させますが,
ファミリー・スタックは動かしません。
f.restore
ウィンドウを前の状態に復元します。ルート・アイコンでのダブルクリックで,
f.normalizeではなく,この機能にバインドされます。
f.restore_and_raise
ウィンドウを前の状態に復元し,ウィンドウ・スタックのいちばん上に出します。
アイコン・ボックス内のアイコンでのダブル・クリックで,
f.normalizeではなく,この機能にバインドされます。
f.screen
argによって指定された画面に移動します。
argの正当な値は,next,prev,
last,または特定の画面番号です。
OSF/Motifリリース1.2には,新しいMWM動作がひとつあります。
<Alt> <Esc>
このキー組合せは,focusAutoRaiseの値に関係なくウィンドウが常に最前面に出されることを除けば,
f.next_
keyと同様に動作します。
OSF/Motifリリース1.2では,ユーザ・インタフェース言語(UIL)に次のような変更がされています。
-sは,setlocaleの使用,およびローカル復号文字列の生成を可能にします。
-sフラグがある二重引用符で囲まれた文字列の構文解析には重大な問題があります。
二重引用符で囲まれた文字列の構文解析でこのフラグを使用する必要がある場合は,OSF
からパッチを入手しなければなりません。
-wmd fileフラグを使えるようになりました。
MrmOpenHierarchyPerDisplay
この関数は,ディスプレイ指示子が明示的な引き数として渡されることを除いて,
古いMrmOpenHierarchy関数と同じです。
この関数が,MrmOpenHierarchyに代わります。
MrmFetchBitmapLiteral
この関数は,深度1のビットマップ・リテラルをフェッチします。