BugReport/165 のバックアップの現在との差分(No.12)




  • 追加された行はこの色です。
  • 削除された行はこの色です。
* 保存確認メッセージが非フォーカス状態で表示される [#rf781f09]
-ページ:     [[BugReport]]
-投稿者:     [[anonymous]]
-優先順位:   低
-状態:       提案
-状態:       完了
-カテゴリー: まとめて閉じる機能
-投稿日:     2014-05-23 (金) 08:41:42
-バージョン: 2.0.7.1 〜 2.1.1.3(一部のコマンドについては2.1.1.3以前の2.x系すべて)
-バージョン: 2.0.7.1 〜 2.1.1.3(一部のコマンドについては2.1.1.3以前を含む2.x系すべて)

** メッセージ [#y0779cea]
複数ドキュメントをタブ表示していて、~
・アクティブタブのドキュメントは変更なし~
・非アクティブタブのドキュメントは変更あり~
の状態からグループを閉じる操作(Alt+F4や×ボタン)をすると、~
「xxxは変更されています。閉じる前に保存しますか?」の確認メッセージが表示されるが、~
このときメッセージボックスからフォーカスが外れていて、キーボード操作(Y/N/ESC)を受け付けない。~
※たまにフォーカスが当たっているときもあるようですが、わりと頻繁にフォーカスが外れています

キーボード中心の操作で閉じる(Alt+F4 → Y/N/ESC)ときに不便になりました。~
それどころか、YやNを押した後に気付いてフォーカスを当て直し、キャンセル操作すると、~
変更なしだったドキュメントのほうにYやNが入力されてしまっています。~

上記のグループを閉じる操作(Alt+F4や×ボタン)のかわりに~
タスクトレイから全終了させようとしたらメッセージ表示したまま無応答になりました。~
※こちらもうまくいくときもあるようです~
orz...

【追記】~
タブバーOFFでも、背後のエディタが変更状態で全終了しようとするとおかしくなるみたいです。~
メッセージボックス表示中、表示元エディタが手前に出ずに、終了指示元のエディタが手前で無応答になっています。~
メッセージ表示元エディタが手前に出たとしても、終了指示元エディタが後方で無応答になっているのはNGと思います。~
自分は普段タブバーONで使っていますが、タブバーOFFのほうが異常な挙動が顕著ですね。これまで報告されなかったのが不思議なくらいです。
&color(Red){【追記1】};~
タブバーOFFで、背後のエディタが変更状態で全終了しようとするとおかしくなります。~
メッセージボックス表示中、メッセージ表示元エディタが手前に出ずに、終了指示元のエディタ(全終了コマンドを入力したエディタ)が手前で無応答になります。~
(仮にメッセージ表示元エディタが手前に出たとしても、終了指示元エディタが後方で無応答なら、NGですが。)~

昔のバージョン(2.0.6.0以前)に戻すとこれらの問題はありません。~
※「このタブ以外(/左/右)を閉じる」については2.0.6.0以前の2.x系すべてで問題があります
&color(Red){【追記2】};~
【追記1】と同様の現象がタブバーONでも起きます。複数グループ表示していて全終了指示した場合に、背後のグループでメッセージボックスが表示されると、終了指示元のエディタが手前で無応答になります。~

&color(Red){【追記3】};(2014-06-05)~
タブバーONで、[(無題)1(更新)]と[(無題)2]を表示していて、[(無題)2]の画面から
「このタブ以外(/左/右)を閉じる」を実行し、[(無題)1(更新)]画面の保存確認
ダイアログを 'N' で閉じると、
[(無題)2]画面に戻ったときに、[(無題)2]タブが非選択状態になります。~

&color(Red){【追記4】};(2014-06-05)~
タブバーONで、[(無題)1(更新)]〜[(無題)19(更新)](多数の未保存文書)と[(無題)20]を表示していて、[(無題)20]の画面から
「このタブ以外(/左/右)を閉じる」を実行し、[(無題)1(更新)]〜[(無題)19(更新)]画面の保存確認
ダイアログを 'N' で次々に閉じていくうちに、
どこか途中からダイアログを表示している画面ではなく[(無題)20]の無応答画面が表示されるようになります。~
~
&color(Blue){2.0.6.0以前のバージョンに戻すとこれらの問題はありません。};~
&color(Blue){(ただし、【追記4】については2.0.6.0以前の2.x.x.xや1.6.6.0を含む全バージョンで起きます。)};~
&color(Blue){本件の問題の多くは、rev2832での変更によるものです。};~
~
※ 通常の環境では報告の通り、保存確認メッセージが非フォーカスになる現象が起きるはずですが、何か他のアプリが無理やりSystemParametersInfoのSPI_GETFOREGROUNDLOCKTIMEOUTの時間をゼロにしたまま放置したとか、特殊な環境では再現しない可能性があります。~
自分が確認したところでは、Win7(x86)×2台+Win7(x64)×2台+Win8.1(x64)×2台+Server2008R2の合計7台(うち3台は他者管理下のほぼ新規セットアップ直後状態のPC)すべての環境で再現しています。

----
- コミットログを見ただけですが、rev2832(複数ウィンドウを閉じる時にウインドウの遷移を抑制しバタつかない様にする)あたりからかも -- [[投稿者]] &new{2014-05-23 (金) 09:46:13};
- %%CAppNodeGroupHandle::RequestCloseEditor()の中でコメントアウトされているActivateFrameWindow()を復活させれば治癒する?%% -- [[投稿者]] &new{2014-05-23 (金) 10:19:02};
- rev2832以前の処理(アクティブになった画面のプロセスが次の画面をアクティブ化するということを連鎖的に繰り返す方式[CEditWnd::OnClose()])に全面的に戻したほうが、多くのOS環境で将来的にも安定動作が保障される気がするんだけど…。元がその方式になっていたのは、非アクティブなプロセスによる自/他プロセスのアクティブ化はブロックされる心配がある(新OSになるほどそういった制約は厳しくなる)から、という意図があってのことだと思われ -- [[投稿者]] &new{2014-05-23 (金) 13:05:06};
- 少し見直してみたら、これとは別に、「このタブ以外(/左/右)を閉じる」コマンドもCEditWnd::OnClose()の処理との整合をまるで考慮せずに追加実装されてしまっていたようなので、当該コマンド限定ですが、単純に元に戻しても問題が残りますね(2.0.5.0でも無応答になったりする場合があることを確認しました)。この部分はVer2.0系全滅っぽい気がします。本文に追記しました。 -- [[投稿者]]  &new{2014-05-24 (土) 12:25:20};
- Win7 SP1 x64で少し試した所では再現しませんでした。 -- [[もか]] &new{2014-05-24 (土) 19:49:12};
- 終了指示元のエディタ([ファイル]-[編集の全終了]操作をしたエディタ)は全エディタがクローズするまでRequestCloseEditorを抜けないので、他エディタでメッセージ表示待機していたら、その間は必ず無応答になるはずです。その部分の確認はタブバーOFFで試してみてください。 --  &new{2014-05-24 (土) 20:47:48};
- とりあえず、自分用に作成した修正パッチをここに置いておきます。2.0.6.0以前の問題も全部解決できているつもりです。(↓にあるrev2832_fix.patch) -- [[投稿者]] &new{2014-05-24 (土) 21:00:13};
- CEditWnd::OnClose()のWait処理は、過去Verと同じ条件付きで行うように変更しました。(rev2832_fix2.patch) -- [[投稿者]] &new{2014-05-24 (土) 23:28:25};
- タブバーONでも、[保存しますか?]を表示してトレイの一覧から編集の全終了を指示したエディタを選んだら無応答画面になりました -- [[もか]] &new{2014-05-24 (土) 23:57:03};
- コメントが多くて見苦しくなったのでまとめて削除しました。あと、自作パッチも整理して最新版(rev2832_fix8.patch)だけにしました。 -- [[投稿者]] &new{2014-06-07 (土) 22:09:49};
- [[upatchid:858]] 転載しました --  &new{2014-07-03 (木) 03:48:41};
- [[svn:3820]] --  &new{2014-10-04 (土) 20:00:04};
- 2.1.1.4で修正済み --  &new{2015-08-01 (土) 11:33:50};

#comment
#attach


    ホーム 一覧 単語検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS