OSDN Ticket Archive


Ticket #37379

macOS版 設定ダイアログ表示中にキー操作をメインウィンドウに反映させない

登録: 2017-07-17 23:16 最終更新: 2017-07-17 23:28

報告者:
yknk
担当者:
yknk
チケットの種類:
バグ
状況:
完了
コンポーネント:
MIDITrail Ver.1.2.x for Mac OS X
マイルストーン:
Version 1.2.3 for macOS (完了済み)
優先度:
5 - 中
重要度:
5 - 中
解決法:
修正済み
ファイル:
なし

詳細

設定ダイアログ表示中にカーソルキーを操作すると、メインウィンドウのカメラが移動してしまう。 設定ダイアログ表示中は、メインウィンドウにキー操作が反映されないようにするべき。

「#37374 macOS版 背景画像表示機能追加」にて、背景画像のファイルパスを入力する エディットボックスを用意したことにより、パス文字列編集時に本現象が発生することが分かった。 サンドボックス対応でパス文字列の編集は許可しないことにしたため、直接弊害が起きることは なくなったが、念のため修正しておく。

チケットの履歴

2017-07-17 23:16 更新者: yknk
  • 新しいチケット "macOS版 設定ダイアログ表示中にキー操作をメインウィンドウに反映させない" が作成されました
2017-07-17 23:27 更新者: yknk
コメント

原因

一人称カメラクラスMTFirstPersonCamは、DIKeyCtrlクラスを用いてキー押下状態を検出している。 DIKeyCtrlクラスは、設定ダイアログの表示状態を意識しておらず、設定ダイアログ上の エディットボックスでキー操作をした場合であっても、キー操作を検出するため。

2017-07-17 23:27 更新者: yknk
コメント

対策方針

DIKeyCtrlクラスにロック制御するメソッドを追加する。ロック中はキー入力状態を無視する。 設定ダイアログ表示開始前にロックを開始し、設定ダイアログ表示終了時にロックを解除する。

2017-07-17 23:28 更新者: yknk
コメント

対策

DIKeyCtrl

メンバ変数にロック状態m_isLockedを追加。

DIKeyCtrl::DIKeyCtrl

デストラクタにm_isLockedの初期化処理を追加。

DIKeyCtrl::IsKeyDown

ロック中はキー押下状態を無視する処理を追加。

DIKeyCtrl::SetLockState

ロック状態設定メソッドを新規追加。

MIDITrailApp::OnMenuFileOpen

設定ダイアログの表示前にDIKeyCtrlをロック、表示終了後にロック解除する処理を追加。

MIDITrailApp::OnMenuWindowSize

設定ダイアログの表示前にDIKeyCtrlをロック、表示終了後にロック解除する処理を追加。

MIDITrailApp::OnMenuOptionMIDIOUT

設定ダイアログの表示前にDIKeyCtrlをロック、表示終了後にロック解除する処理を追加。

MIDITrailApp::OnMenuOptionMIDIIN

設定ダイアログの表示前にDIKeyCtrlをロック、表示終了後にロック解除する処理を追加。

MIDITrailApp::OnMenuOptionGraphic

設定ダイアログの表示前にDIKeyCtrlをロック、表示終了後にロック解除する処理を追加。

2017-07-17 23:28 更新者: yknk
  • 解決法なし から 修正済み に更新されました
  • 状況オープン から 完了 に更新されました
  • チケット完了時刻2017-07-17 23:28 に更新されました

添付ファイルリスト

添付ファイルはありません