Skip to content

【ファイル読み込み時】エディタの内容が別のコースの物に上書きされる #5

@hinanoaira

Description

@hinanoaira

【ファイル読み込み時】エディタの内容が別のコースの物に上書きされる

問題の内容

ファイルを読み込んだ際に、コースリストの1番目にあるデータが2番目のものに、2番目にあるデータが3番目の物に書き換わってしまう。
エディタが保持しているテキストは正常なので、その状態で各コースごとにテキストを更新すると正常に戻る。

再現手順

コースが2つ以上あるプロジェクトファイルを読み込む。

修正すべき内容

ファイル読み込み処理中に行うエディタにデータの内容を反映させる処理を実行する際に、
本来実行しなくても良いエディタの内容をProgram.Project.Coursesに反映させる処理(Editor.TextEditor_TextChanged)が発生してしまうが、
その処理を行う時に処理している最中のコースの内部IDと、現在編集しているコースの内部IDを示すCurrentCourseIDが一致していないため、異なるデータ間で上書きが発生してしまう。

解決策

  • 案1
    Windows\Studio.cs 179~180行目
Program.WindowManager.Editors[Program.WindowManager.Editors.Count - 1].TextEditor.Document.Text = item.Text.Replace("\n", Environment.NewLine);
Program.WindowManager.Editors[Program.WindowManager.Editors.Count - 1].Show(Dock);

この2行を入れ替え、Show()処理に内包されているCurrentCourseIDを更新する処理を実行した後にエディタのタブ追加処理を行う。

  • 案2
    ファイルの読み込み中であるかどうかを確認できる仕組みを実装し、
    Editor.TextEditor_TextChanged側でそれを確認してからデータの更新処理を行う。

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions