sakura
sakura copied to clipboard
アウトラインの「ドッキング配置をタイプ別継承」が効かない場合がある
連投すみません. サクラエディタの正確な仕様を知らないのでバグとは言い難いのですが,私が想像する動作と違う動きをするので,ひとまず報告させていただきます.
問題内容
アウトライン解析ウィンドウの▼メニューで以下の設定時:
- ドッキング配置を同期 の選択を外す
- ドッキング配置をタイプ別継承
私が想像する動作
アウトライン解析ウィンドウの表示/非表示状態がタイプ別に記憶され,次回 open 時に反映される
実際の動作
アウトライン解析ウィンドウの表示/非表示状態が反映されない場合がある
再現手順
何の設定が影響あるかわからないので,症状が再現する .ini を添付します. この ini では C/C++ の bOutlineDockDisp=1 になっています. sakura.ini.zip
- sakura.ini を添付のものに上書きします
- sakura.exe を W クリックして,「無題」を開いている状態にします.
- sakura のウィンドウに .cpp を D&D します.この手順ではアウトライン解析ウィンドウが開きます (私が期待する動作)
一旦 sakura を閉じて,
- sakura.ini を添付のものに上書きします
- エクスプローラで sakura.exe に .cpp を D&D します..cpp ファイルが開きますが,アウトライン解析は開きません (私の期待と違う動作)
再現頻度
100%
問題のカテゴリ
- プログラムの動作上の問題
環境情報
-
OS バージョン Win10 Pro build 1903
-
サクラエディタバージョン
サクラエディタ v2.4.0.2576 32bit dev
(GitHash b3278eb2cd41edf11c5e8c9ad2126d48677c9475)
(GitURL https://github.com/sakura-editor/sakura.git)
Compile Info: V1916 WPR WIN601/I800/C000/N601
Last Modified: 2020/1/27 11:53:29
- PC情報
スクリーンショット
xyOutlineDock=0,0,0,0 という設定値に問題がありそうです。
新しくアウトラインウィンドウが表示できないことから、 表示されているけど見えていない状態に陥っているような。
再現手順をなぞっても再現できなくなったときには、設定値は xyOutlineDock=312,217,312,217 のようになっていました(他は同じ)。
考えるべきはどのようにして 0,0,0,0 のような値が書き込まれたかでしょうか。
@ds14050 さん検証ありがとうございました.
考えるべきはどのようにして 0,0,0,0 のような値が書き込まれたかでしょうか。
ini を削除するところから始めて,わりとサクッと ini ができたような記憶があるのですが,いま手順を再現しようとしてみたのですが,再現できませんでした.
とにかく,ini が異常な状態であったということで,それを修正すれば私の環境では問題なくなりましたので,私としては本件はクローズさせていただきたいと思います. (チケットを閉じるかどうかは他の方におまかせしたいと思います.)
なんかみんな、この機能が大好きみたいですね :smiley:
めちゃめちゃ複雑な機能なので不具合も多いんですが、 その割には果敢に新機能が追加されまくってきた歴史がある気がします。 (普通は不具合が出ると、その領域の進化が停滞するので。)
考えるべきはどのようにして 0,0,0,0 のような値が書き込まれたかでしょうか。
これは単に初期値ですね。
sakura.iniを消してsakura.exe起動、何もせずそのまま終了、 で 0,0,0,0 が書き込まれるのを確認できました。
新しくアウトラインウィンドウが表示できないことから、 表示されているけど見えていない状態に陥っているような。
再現状態(=アウトラインウインドウが見えてない)で spy++
を使ったら
アウトラインウインドウが「ない」のか「見えてないだけ」なのか分かるかも知れません。
ダイアログベースのウインドウなのでキャプションから推定するしかないのが痛いですが。
前振り
手順通りやって再現できたので見解報告します。 @ds14050 さんの想定が当たってそうです。
調査結果
新しくアウトラインウィンドウが表示できないことから、 表示されているけど見えていない状態に陥っているような。
Spy++
で確認したところ、幅0px のウインドウになっていました。
問題の本質を探る考察
1つ目の操作群は、メインウインドウに.cppファイルをドロップしたときの挙動です。 2つ目の操作群は、sakura.exe のコマンドラインに.cppファイルを指定したときの挙動です。
両者の挙動に差異があり後者の挙動が「おかしい」のであれば、 それはコマンドラインからの起動に関するバグなのだと思います。
起動時のアウトラインウインドウの表示に関しては、何やら問題対策をした形跡が残っています。 https://github.com/sakura-editor/sakura/blob/b3278eb2cd41edf11c5e8c9ad2126d48677c9475/sakura_core/_main/CNormalProcess.cpp#L184
初期化処理関数の中に上記呼出しが複数入っているんですけど、正常ルート(=.cppファイルをコマンドラインから開いたときに通ると思われるルート)にはこの呼出しがないんです。
どうすべきなのかは、ぶっちゃけ見えていませんが、 他のクラスのクラスメンバを操作するコードに違和感を持っています。
CEditWndが作成時に行うべき処理が漏れてるから、外側のコードが必要なんじゃないか?みたいな。
ちなみに。
とにかく,ini が異常な状態であったということで,それを修正すれば私の環境では問題なくなりましたので,私としては本件はクローズさせていただきたいと思います.
https://github.com/sakura-editor/sakura/issues/1177#issuecomment-580298260 の通り 0,0,0,0 はただの初期値なので、iniの異常で起きた不測の事態ではないと考えられます。
現状で対策案はないけど、引き続き調査&対策しといたほうがよい案件だと思います。