OSDN Git Service

保存されているかどうかわかる必要があった
authorgdkhd812 <test@yahoo.co.jp>
Sat, 2 Sep 2017 08:23:37 +0000 (17:23 +0900)
committergdkhd812 <test@yahoo.co.jp>
Sat, 2 Sep 2017 08:23:37 +0000 (17:23 +0900)
Core/Document.cs

index 14d325a..6ea05ff 100644 (file)
@@ -200,6 +200,7 @@ namespace FooEditEngine
             this.CaretChanged += (s, e) => { };
             this.AutoIndentHook += (s, e) => { };
             this.LineBreakChanged += (s, e) => { };
+            this.Dirty = false;
         }
 
         void WacthDogPattern_Updated(object sender, EventArgs e)
@@ -208,6 +209,15 @@ namespace FooEditEngine
         }
 
         /// <summary>
+        /// ダーティフラグ。保存されていなければ真、そうでなければ偽。
+        /// </summary>
+        public bool Dirty
+        {
+            get;
+            set;
+        }
+
+        /// <summary>
         /// キャレットでの選択の起点となる位置
         /// </summary>
         internal int AnchorIndex
@@ -1106,6 +1116,7 @@ namespace FooEditEngine
         public void Clear()
         {
             this.buffer.Clear();
+            this.Dirty = false;
         }
 
         /// <summary>
@@ -1134,6 +1145,7 @@ namespace FooEditEngine
             }
             finally
             {
+                this.Dirty = false; //ファイルの内容とドキュメントの中身は同じなのでダーティフラグは偽にする
                 this.PerformLayout();
                 //これ以降の操作にだけダーティフラグを適用しないとおかしなことになる
                 this.LayoutLines.IsFrozneDirtyFlag = false;
@@ -1148,7 +1160,7 @@ namespace FooEditEngine
         /// <param name="fs">IStreamWriterオブジェクト</param>
         /// <param name="tokenSource">キャンセルトークン</param>
         /// <returns>Taskオブジェクト</returns>
-        /// <remarks>非同期操作中はこのメソッドを実行することはできません</remarks>
+        /// <remarks>非同期操作中はこのメソッドを実行することはできません。同時にダーティフラグもクリアされます</remarks>
         public async Task SaveAsync(TextWriter fs, CancellationTokenSource tokenSource = null)
         {
             try
@@ -1172,6 +1184,7 @@ namespace FooEditEngine
 #endif
                     }
                 }
+                this.Dirty = false;
             }
             finally
             {
@@ -1340,6 +1353,7 @@ namespace FooEditEngine
                     this._LayoutLines.Clear();
                     break;
             }
+            this.Dirty = true;
             this.UpdateCalledAlways(this, e);
             if(this.FireUpdateEvent)
                 this.Update(this, e);