this.Document = doc;
this.View = view;
this.View.render.ChangedRenderResource += render_ChangedRenderResource;
- this.View.PerformLayouted += View_LineBreakChanged;
this.View.PageBoundChanged += View_PageBoundChanged;
this.Document.Clear();
}
this._Document.Update -= Document_Update;
this._Document.StatusUpdate -= Document_StatusChanged;
this._Document.SelectionChanged -= Document_SelectionChanged;
+ this._Document.PerformLayouted -= View_LineBreakChanged;
}
this._Document = value;
this._Document.Update += new DocumentUpdateEventHandler(Document_Update);
this._Document.StatusUpdate += Document_StatusChanged;
this._Document.SelectionChanged += Document_SelectionChanged;
+ this._Document.PerformLayouted += View_LineBreakChanged;
}
}
void View_PageBoundChanged(object sender, EventArgs e)
{
if (this.Document.LineBreak == LineBreakMethod.PageBound && this.View.PageBound.Width - this.View.LineBreakingMarginWidth > 0)
- this.View.PerfomLayouts();
+ this.Document.PerformLayout();
this.AdjustCaret();
}
if (e.type == ResourceType.Font)
{
if (this.Document.LineBreak == LineBreakMethod.PageBound)
- this.View.PerfomLayouts();
+ this.Document.PerformLayout();
this.AdjustCaret();
}
if (e.type == ResourceType.InlineChar)
}
}
+ public event EventHandler PerformLayouted;
+ /// <summary>
+ /// レイアウト行をすべて破棄し、再度レイアウトを行う
+ /// </summary>
+ public void PerformLayout()
+ {
+ //単に再構築するだけなので行ダーティフラグは更新してはいけない
+ this.LayoutLines.IsFrozneDirtyFlag = true;
+ this.FireUpdate(new DocumentUpdateEventArgs(UpdateType.Clear, -1, -1, -1));
+ this.FireUpdate(new DocumentUpdateEventArgs(UpdateType.Replace, 0, 0, this.Length));
+ this.LayoutLines.IsFrozneDirtyFlag = false;
+ if (this.PerformLayouted != null)
+ this.PerformLayouted(this, null);
+ }
+
/// <summary>
/// 選択領域変更時に通知される
/// </summary>
this.render.ChangedRenderResource += new ChangedRenderResourceEventHandler(render_ChangedRenderResource);
this.render.ChangedRightToLeft += render_ChangedRightToLeft;
this.SrcChanged += new EventHandler((s, e) => { });
- this.PerformLayouted += new EventHandler((s, e) => { });
this.PageBoundChanged += new EventHandler((s, e) => { });
}
this._Document.UpdateCalledAlways -= new DocumentUpdateEventHandler(doc_Update);
this._Document.LineBreakChanged -= Document_LineBreakChanged;
this._Document.StatusUpdate -= Document_StatusUpdate;
+ this._Document.PerformLayouted -= _Document_PerformLayouted;
}
this._Document = value;
this._Document.UpdateCalledAlways += new DocumentUpdateEventHandler(doc_Update);
this._Document.LineBreakChanged += Document_LineBreakChanged;
this._Document.StatusUpdate += Document_StatusUpdate;
+ this._Document.PerformLayouted += _Document_PerformLayouted;
this.Document_StatusUpdate(this, null);
}
}
+ private void _Document_PerformLayouted(object sender, EventArgs e)
+ {
+ CalculateLineCountOnScreen();
+ if(this.PerformLayouted != null)
+ this.PerformLayouted(this, e);
+ }
+
private void Document_StatusUpdate(object sender, EventArgs e)
{
if (this.render == null)
public event EventHandler SrcChanged;
+ [Obsolete]
public event EventHandler PerformLayouted;
public event EventHandler PageBoundChanged;
/// <summary>
/// すべてのレイアウト行を破棄し、再度レイアウトをやり直す
/// </summary>
+ [Obsolete]
public virtual void PerfomLayouts()
{
- //単に再構築するだけなので行ダーティフラグは更新してはいけない
- this.LayoutLines.IsFrozneDirtyFlag = true;
- this.Document.FireUpdate(new DocumentUpdateEventArgs(UpdateType.Clear, -1, -1, -1));
- this.Document.FireUpdate(new DocumentUpdateEventArgs(UpdateType.Replace, 0, 0, this.Document.Length));
- this.LayoutLines.IsFrozneDirtyFlag = false;
- CalculateLineCountOnScreen();
- this.PerformLayouted(this, null);
+ //互換性を保つために残しておく
+ this.Document.PerformLayout();
}
/// <summary>