From c9b5dca5ba5104176a3bc818375382c0ed94785d Mon Sep 17 00:00:00 2001 From: konekoneko Date: Tue, 8 Nov 2016 21:56:57 +0530 Subject: [PATCH] =?utf8?q?SelectionChanged=E3=81=8C=E5=90=8C=E3=81=98?= =?utf8?q?=E3=83=91=E3=83=B3=E3=83=89=E3=83=A9=E3=83=BC=E5=86=85=E3=81=A7?= =?utf8?q?=E4=BA=8C=E5=9B=9E=E5=91=BC=E3=81=B3=E5=87=BA=E3=81=95=E3=82=8C?= =?utf8?q?=E3=82=8B=E3=81=93=E3=81=A8=E3=81=8C=E3=81=82=E3=81=A3=E3=81=9F?= =?utf8?q?=E3=81=AE=E3=81=A7=E9=81=BF=E3=81=91=E3=82=8B=E3=82=88=E3=81=86?= =?utf8?q?=E3=81=AB=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- Core/Controller.cs | 9 --------- Core/Document.cs | 6 ++++++ Core/EditView.cs | 3 ++- 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/Core/Controller.cs b/Core/Controller.cs index 6a66384..c02471b 100644 --- a/Core/Controller.cs +++ b/Core/Controller.cs @@ -55,7 +55,6 @@ namespace FooEditEngine { EditView View; Document _Document; - bool keepAnchor = false; public Controller(Document doc, EditView view) { @@ -96,8 +95,6 @@ namespace FooEditEngine private void _Document_CaretChanged(object sender, EventArgs e) { - if (keepAnchor) - return; TextPoint pos = this.Document.CaretPostion; this.JumpCaret(pos.row, pos.col); } @@ -500,7 +497,6 @@ namespace FooEditEngine /// 単語単位で移動するなら真。そうでないなら偽 public void MoveCaretHorizontical(int realLength, bool isSelected,bool alignWord = false) { - keepAnchor = true; for (int i = Math.Abs(realLength); i > 0; i--) { bool MoveFlow = realLength > 0; @@ -513,7 +509,6 @@ namespace FooEditEngine } this.View.AdjustCaretAndSrc(AdjustFlow.Col); this.SelectWithMoveCaret(isSelected); - keepAnchor = false; } void AlignNearestWord(bool MoveFlow) @@ -544,12 +539,10 @@ namespace FooEditEngine /// public void MoveCaretVertical(int deltarow,bool isSelected) { - keepAnchor = true; for (int i = Math.Abs(deltarow); i > 0; i--) this.MoveCaretVertical(deltarow > 0); this.View.AdjustCaretAndSrc(AdjustFlow.Both); this.SelectWithMoveCaret(isSelected); - keepAnchor = false; } /// @@ -738,12 +731,10 @@ namespace FooEditEngine /// public void MoveCaretAndSelect(TextPoint tp) { - keepAnchor = true; int CaretPostion = this.View.GetIndexFromLayoutLine(tp); this.Document.Select(this.Document.AnchorIndex, CaretPostion - this.Document.AnchorIndex); this.View.JumpCaret(tp.row, tp.col); this.View.AdjustCaretAndSrc(); - keepAnchor = false; } /// diff --git a/Core/Document.cs b/Core/Document.cs index f826e1b..575667b 100644 --- a/Core/Document.cs +++ b/Core/Document.cs @@ -439,6 +439,12 @@ namespace FooEditEngine } } + internal void SetCaretPostionWithoutEvent(TextPoint value) + { + if (this._CaretPostion != value) + this._CaretPostion = value; + } + /// /// 選択範囲コレクション /// diff --git a/Core/EditView.cs b/Core/EditView.cs index 94f5889..e40ba2e 100644 --- a/Core/EditView.cs +++ b/Core/EditView.cs @@ -691,7 +691,8 @@ namespace FooEditEngine } } - this.Document.CaretPostion = new TextPoint(row, col); + //イベント呼び出しの再入防止のため + this.Document.SetCaretPostionWithoutEvent(new TextPoint(row, col)); } /// -- 2.11.0