OSDN Git Service

LayoutLinesをDocumentに移動した
[fooeditengine/FooEditEngine.git] / Metro / FooEditEngine / FooTextBox.cs
index d29790b..f40ec3b 100644 (file)
@@ -72,12 +72,12 @@ namespace FooEditEngine.Metro
             this.textStore.CompositionUpdated += textStore_CompositionUpdated;\r
             this.textStore.CompositionEnded += textStore_CompositionEnded;\r
 \r
-            this.Document = new Document();\r
-\r
             this.rectangle = new Windows.UI.Xaml.Shapes.Rectangle();\r
             this.rectangle.Margin = this.Padding;\r
             this.Render = new D2DRender(this,this.rectangle,this.textStore);\r
 \r
+            this.Document = new Document(this.Render);\r
+\r
             this.View = new EditView(this.Document, this.Render, new Padding(5, Gripper.HitAreaWidth, Gripper.HitAreaWidth / 2, Gripper.HitAreaWidth));\r
             this.View.SrcChanged += View_SrcChanged;\r
             this.View.InsertMode = this.InsertMode;\r
@@ -325,6 +325,7 @@ namespace FooEditEngine.Metro
         /// <returns>Taskオブジェクト</returns>\r
         public async Task LoadFileAsync(System.IO.StreamReader sr, System.Threading.CancellationTokenSource token)\r
         {\r
+            this.IsEnabled = false;\r
             this.View.LayoutLines.IsFrozneDirtyFlag = true;\r
             WinFileReader fs = new WinFileReader(sr);\r
             await this.Document.LoadAsync(fs, token);\r
@@ -333,6 +334,7 @@ namespace FooEditEngine.Metro
             if (this.verticalScrollBar != null)\r
                 this.verticalScrollBar.Maximum = this.View.LayoutLines.Count;\r
             this.View.CalculateLineCountOnScreen();\r
+            this.IsEnabled = true;\r
         }\r
 \r
         /// <summary>\r
@@ -808,11 +810,16 @@ namespace FooEditEngine.Metro
                         else\r
                             this._Controller.MoveCaretAndSelect(tp);\r
                     }\r
-                    if (this.peer != null)\r
-                        this.peer.OnNotifyCaretChanged();\r
-                    this.Refresh();\r
-                    return;\r
                 }\r
+                else\r
+                {\r
+                    TextPoint tp = this.View.GetTextPointFromPostion(p);\r
+                    this._Controller.MoveCaretAndSelect(tp);\r
+                }\r
+                if (this.peer != null)\r
+                    this.peer.OnNotifyCaretChanged();\r
+                this.Refresh();\r
+                return;\r
             }\r
             if (e.Delta.Scale < 1)\r
             {\r