OSDN Git Service

メトロ版で単語選択ができるようにした
authorgdkhd812 <test@nnn.co.jp>
Thu, 22 Oct 2015 17:13:26 +0000 (22:43 +0530)
committergdkhd812 <test@nnn.co.jp>
Thu, 22 Oct 2015 17:13:26 +0000 (22:43 +0530)
Core/Controller.cs
Metro/FooEditEngine/FooTextBox.cs

index c443126..a0b85d3 100644 (file)
@@ -249,7 +249,8 @@ namespace FooEditEngine
         /// 単語単位で選択する
         /// </summary>
         /// <param name="index">探索を開始するインデックス</param>
-        public void SelectWord(int index)
+        /// <param name="changeAnchor">選択の起点となるとインデックスを変更するなら真。そうでなければ偽</param>
+        public void SelectWord(int index, bool changeAnchor = false)
         {
             if (this.Document.FireUpdateEvent == false)
                 throw new InvalidOperationException("");
@@ -271,6 +272,9 @@ namespace FooEditEngine
                 end++;
 
             this.Select(start, end - start);
+
+            if(changeAnchor)
+                this.AnchorIndex = start;
         }
 
         /// <summary>
index 6468898..a20af77 100644 (file)
@@ -98,6 +98,7 @@ namespace FooEditEngine.Metro
             this.gestureRecongnizer.GestureSettings = GestureSettings.Drag | 
                 GestureSettings.RightTap | 
                 GestureSettings.Tap | 
+                GestureSettings.DoubleTap |
                 GestureSettings.ManipulationTranslateX | 
                 GestureSettings.ManipulationTranslateY |
                 GestureSettings.ManipulationScale |
@@ -962,6 +963,13 @@ namespace FooEditEngine.Metro
             this.FirstGripper.Enabled = false;
             this.SecondGripper.Enabled = touched;
             this.JumpCaret(e.Position);
+            System.Diagnostics.Debug.WriteLine(e.TapCount);
+            if (e.TapCount == 2)
+            {
+                this.FirstGripper.Enabled = touched;
+                //タッチスクリーンでダブルタップした場合、アンカーインデックスを単語の先頭にしないとバグる
+                this.Controller.SelectWord(this.Controller.SelectionStart, touched);
+            }
         }
 
         void JumpCaret(Point p)