[ 前のページ ] [ 次のページ ] [ 目次 ] [ 索引 ]
本リリース・ノートは,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のビットマップ・リテラルをフェッチします。