BugReport/165 のバックアップソース(No.22)



* 保存確認メッセージが非フォーカス状態で表示される [#rf781f09]
-ページ:     [[BugReport]]
-投稿者:     [[anonymous]]
-優先順位:   低
-状態:       提案
-カテゴリー: まとめて閉じる機能
-投稿日:     2014-05-23 (金) 08:41:42
-バージョン: 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...

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

&color(Red){【追記2】};~
タブバーONでも、複数グループ表示していて全終了指示した場合に、背後のグループでメッセージボックスが表示されると、終了指示元のエディタが手前で無応答になりますね。~

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

昔のバージョン(2.0.6.0以前)に戻すとこれらの問題はありません。~

----
- コミットログを見ただけですが、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};
- あぁ、fix/fix2パッチでも、「このタブ以外(/左/右)を閉じる」の場合だけは、メッセージ表示している最中にトレイや別グループの一覧から指示元エディタを選ぶと無応答画面になりますね。しかしそこまで回避するのは…厄介な気がします。何とかして最初に画面終了するエディタに仕事を代行してもらうとか?私が自分専用版として使う分にはそこまでしなくていいかな〜、と思ってますけど。 -- [[投稿者]]  &new{2014-05-25 (日) 07:20:29};
- 少し修正。↑の残課題は未解決です(rev2832_fix3.patch) -- [[投稿者]]  &new{2014-05-25 (日) 10:22:13};
- ちらつきが減るようにした案を作成。fix3とは別の方式です。(rev2832_fix5.patch) -- [[投稿者]] &new{2014-05-27 (火) 23:45:03};
- fix5では保存確認の事前チェックが遠回しな感じだったので、チェック不要で動作するように修正(rev2832_fix6.patch) -- [[投稿者]] &new{2014-05-29 (木) 22:20:42};
- 【追記3】の対策を追加しました(rev2832_fix7.patch) -- [[投稿者]] &new{2014-06-05 (木) 13:03:33};

#comment
#attach

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