diff --git a/xfa/fde/cfde_txtedtengine.cpp b/xfa/fde/cfde_txtedtengine.cpp
index 8693173..063c730 100644
--- a/xfa/fde/cfde_txtedtengine.cpp
+++ b/xfa/fde/cfde_txtedtengine.cpp
@@ -161,7 +161,6 @@
       m_nPageLineCount(20),
       m_nLineCount(0),
       m_nAnchorPos(-1),
-      m_nLayoutPos(0),
       m_fCaretPosReserve(0.0),
       m_nCaret(0),
       m_bBefore(true),
@@ -381,14 +380,6 @@
   return m_nCaret;
 }
 
-void CFDE_TxtEdtEngine::Lock() {
-  m_bLock = true;
-}
-
-void CFDE_TxtEdtEngine::Unlock() {
-  m_bLock = false;
-}
-
 bool CFDE_TxtEdtEngine::IsLocked() const {
   return m_bLock;
 }
@@ -702,39 +693,16 @@
   return true;
 }
 
-int32_t CFDE_TxtEdtEngine::StartLayout() {
-  Lock();
+void CFDE_TxtEdtEngine::Layout() {
+  CFX_AutoRestorer<bool> lock(&m_bLock);
+  m_bLock = true;
+
   RemoveAllPages();
-  m_nLayoutPos = 0;
-  m_nLineCount = 0;
-  return 0;
-}
-
-int32_t CFDE_TxtEdtEngine::DoLayout() {
-  int32_t nCount = pdfium::CollectionSize<int32_t>(m_ParagPtrArray);
-  CFDE_TxtEdtParag* pParag = nullptr;
-  int32_t nLineCount = 0;
-  for (; m_nLayoutPos < nCount; m_nLayoutPos++) {
-    pParag = m_ParagPtrArray[m_nLayoutPos].get();
-    pParag->CalcLines();
-    nLineCount += pParag->GetLineCount();
-  }
-  m_nLineCount += nLineCount;
-  return 100;
-}
-
-void CFDE_TxtEdtEngine::EndLayout() {
+  UpdateLineCounts();
   UpdatePages();
-  int32_t nLength = GetTextLength();
-  if (m_nCaret > nLength)
-    m_nCaret = nLength;
 
-  int32_t nIndex = m_nCaret;
-  if (!m_bBefore)
-    nIndex--;
-
+  m_nCaret = std::min(m_nCaret, GetTextLength());
   m_rtCaret = CFX_RectF(0, 0, 1, m_Param.fFontSize);
-  Unlock();
 }
 
 CFDE_TxtEdtBuf* CFDE_TxtEdtEngine::GetTextBuf() const {
@@ -1012,14 +980,13 @@
   m_PagePtrArray.clear();
 }
 
-void CFDE_TxtEdtEngine::UpdateParags() {
+void CFDE_TxtEdtEngine::UpdateLineCounts() {
   if (m_ParagPtrArray.empty())
     return;
 
   int32_t nLineCount = 0;
   for (auto& pParag : m_ParagPtrArray) {
-    if (pParag->GetLineCount() == -1)
-      pParag->CalcLines();
+    pParag->CalcLines();
     nLineCount += pParag->GetLineCount();
   }
   m_nLineCount = nLineCount;
diff --git a/xfa/fde/cfde_txtedtengine.h b/xfa/fde/cfde_txtedtengine.h
index c4db3e9..4d3490a 100644
--- a/xfa/fde/cfde_txtedtengine.h
+++ b/xfa/fde/cfde_txtedtengine.h
@@ -111,8 +111,6 @@
   int32_t GetCaretPos() const;
   int32_t SetCaretPos(int32_t nIndex, bool bBefore);
   int32_t MoveCaretPos(FDE_TXTEDTMOVECARET eMoveCaret, bool bShift, bool bCtrl);
-  void Lock();
-  void Unlock();
   bool IsLocked() const;
 
   int32_t Insert(int32_t nStart, const wchar_t* lpText, int32_t nLength);
@@ -136,9 +134,7 @@
   bool Redo(const IFDE_TxtEdtDoRecord* pRecord);
   bool Undo(const IFDE_TxtEdtDoRecord* pRecord);
 
-  int32_t StartLayout();
-  int32_t DoLayout();
-  void EndLayout();
+  void Layout();
 
   int32_t CountParags() const;
   CFDE_TxtEdtParag* GetParag(int32_t nParagIndex) const;
@@ -195,7 +191,7 @@
   void RebuildParagraphs();
   void RemoveAllParags();
   void RemoveAllPages();
-  void UpdateParags();
+  void UpdateLineCounts();
   void UpdatePages();
   void UpdateTxtBreak();
 
@@ -230,7 +226,6 @@
   int32_t m_nPageLineCount;
   int32_t m_nLineCount;
   int32_t m_nAnchorPos;
-  int32_t m_nLayoutPos;
   float m_fCaretPosReserve;
   int32_t m_nCaret;
   bool m_bBefore;
diff --git a/xfa/fwl/cfwl_edit.cpp b/xfa/fwl/cfwl_edit.cpp
index eb54375..9e38187 100644
--- a/xfa/fwl/cfwl_edit.cpp
+++ b/xfa/fwl/cfwl_edit.cpp
@@ -726,9 +726,8 @@
   if (pPage)
     pPage->UnloadPage(nullptr);
 
-  m_EdtEngine.StartLayout();
-  m_EdtEngine.DoLayout();
-  m_EdtEngine.EndLayout();
+  m_EdtEngine.Layout();
+
   pPage = m_EdtEngine.GetPage(0);
   if (pPage)
     pPage->LoadPage(nullptr);
