OSDN Git Service

ScrollIntoViewを実装した
authorkonekoneko <test2214@hotmail.co.jp>
Fri, 2 May 2014 19:00:10 +0000 (04:00 +0900)
committerkonekoneko <test2214@hotmail.co.jp>
Fri, 2 May 2014 19:00:10 +0000 (04:00 +0900)
Common/Automaion/FooTextBoxAutomationPeer.cs
Common/EditView.cs
Metro/FooEditEngine/FooTextBox.cs
WPF/FooEditEngine/FooTextBox.cs

index 384c304..1060486 100644 (file)
@@ -592,6 +592,8 @@ namespace FooEditEngine
 
         public void ScrollIntoView(bool alignToTop)
         {
+            int row = this.textbox.LayoutLineCollection.GetLineNumberFromIndex(alignToTop ? this.start : this.end);
+            this.textbox.ScrollIntoView(row, alignToTop);
         }
 
         public void Select()
index b059743..a8588d9 100644 (file)
@@ -768,6 +768,32 @@ namespace FooEditEngine
             base.TryScroll(x, row);\r
         }\r
 \r
+        /// <summary>\r
+        /// 指定行までスクロールする\r
+        /// </summary>\r
+        /// <param name="row">行</param>\r
+        /// <param name="alignTop">指定行を画面上に置くなら真。そうでないなら偽</param>\r
+        public void ScrollIntoView(int row, bool alignTop)\r
+        {\r
+            this.Scroll(0, row);\r
+            if (alignTop)\r
+                return;\r
+            double y = this.render.TextArea.Height;\r
+            for (int i = row; i >= 0; i--)\r
+            {\r
+                int lineHeadIndex = this.LayoutLines.GetIndexFromLineNumber(i);\r
+                int lineLength = this.LayoutLines.GetLengthFromLineNumber(i);\r
+                double height = this.LayoutLines.GetLayout(i).Height;\r
+                if (y - height <= 0)\r
+                {\r
+                    this.Scroll(0, i);\r
+                }\r
+                if (this.LayoutLines.FoldingCollection.IsHidden(lineHeadIndex))\r
+                    continue;\r
+                y -= height;\r
+            }\r
+        }\r
+\r
         public int AdjustRow(int row, bool isMoveNext)\r
         {\r
             if (this.LayoutLines.FoldingStrategy == null)\r
index 3f76473..1445fea 100644 (file)
@@ -320,6 +320,16 @@ namespace FooEditEngine.Metro
         }\r
 \r
         /// <summary>\r
+        /// 指定行までスクロールする\r
+        /// </summary>\r
+        /// <param name="row">行</param>\r
+        /// <param name="alignTop">指定行を画面上に置くなら真。そうでないなら偽</param>\r
+        public void ScrollIntoView(int row, bool alignTop)\r
+        {\r
+            this.View.ScrollIntoView(row, alignTop);\r
+        }\r
+\r
+        /// <summary>\r
         /// ファイルからドキュメントを構築する\r
         /// </summary>\r
         /// <param name="sr">StremReader</param>\r
index 57370cb..25e71c6 100644 (file)
@@ -348,6 +348,16 @@ namespace FooEditEngine.WPF
         }\r
 \r
         /// <summary>\r
+        /// 指定行までスクロールする\r
+        /// </summary>\r
+        /// <param name="row">行</param>\r
+        /// <param name="alignTop">指定行を画面上に置くなら真。そうでないなら偽</param>\r
+        public void ScrollIntoView(int row, bool alignTop)\r
+        {\r
+            this.View.ScrollIntoView(row, alignTop);\r
+        }\r
+\r
+        /// <summary>\r
         /// ストリームからドキュメントを構築する\r
         /// </summary>\r
         /// <param name="tr">TextReader</param>\r