diff --git a/Externals/crystaledit/editlib/ccrystaltextview.cpp b/Externals/crystaledit/editlib/ccrystaltextview.cpp index f0d7d7ef7ee..3b8b26d466c 100644 --- a/Externals/crystaledit/editlib/ccrystaltextview.cpp +++ b/Externals/crystaledit/editlib/ccrystaltextview.cpp @@ -3310,6 +3310,17 @@ GetMaxLineLength (int nTopLine, int nLines) return nMaxLineLength; } +bool CCrystalTextView:: +CoverLength(int nTopLine, int nLines, int min_length) +{ + const int nLineCount = (std::min)(nTopLine + nLines, GetLineCount()); + for (int I = nTopLine; I != nLineCount; I++) { + if (GetLineActualLength(I) >= min_length) + return true; + } + return false; +} + CCrystalTextView *CCrystalTextView:: GetSiblingView (int nRow, int nCol) { @@ -3888,8 +3899,8 @@ AttachToBuffer (CCrystalTextBuffer * pBuf /*= nullptr*/ ) ESB_DISABLE_BOTH : ESB_ENABLE_BOTH); CScrollBar *pHorzScrollBarCtrl = GetScrollBarCtrl (SB_HORZ); if (pHorzScrollBarCtrl != nullptr) - pHorzScrollBarCtrl->EnableScrollBar (GetScreenChars () >= GetMaxLineLength (m_nTopLine, GetScreenLines())? - ESB_DISABLE_BOTH : ESB_ENABLE_BOTH); + pHorzScrollBarCtrl->EnableScrollBar(CoverLength(m_nTopLine, GetScreenLines(), GetScreenChars()) ? + ESB_DISABLE_BOTH : ESB_ENABLE_BOTH); // Update scrollbars InvalidateVertScrollBar (); diff --git a/Externals/crystaledit/editlib/ccrystaltextview.h b/Externals/crystaledit/editlib/ccrystaltextview.h index 9eae12c324e..fae9c399494 100644 --- a/Externals/crystaledit/editlib/ccrystaltextview.h +++ b/Externals/crystaledit/editlib/ccrystaltextview.h @@ -406,6 +406,7 @@ protected : //END SW int GetCharWidth (); int GetMaxLineLength (int nTopLine, int nLines); + bool CoverLength(int nTopLine, int nLines, int min_length); int GetScreenLines (); int GetScreenChars (); diff --git a/Externals/crystaledit/editlib/ccrystaltextview2.cpp b/Externals/crystaledit/editlib/ccrystaltextview2.cpp index e775652f70c..dd74a2e33a1 100644 --- a/Externals/crystaledit/editlib/ccrystaltextview2.cpp +++ b/Externals/crystaledit/editlib/ccrystaltextview2.cpp @@ -478,7 +478,7 @@ ScrollLeft () void CCrystalTextView:: ScrollRight () { - if (m_nOffsetChar < GetMaxLineLength (m_nTopLine, GetScreenLines()) - 1) + if (CoverLength(m_nTopLine, GetScreenLines(), m_nOffsetChar)) { ScrollToChar (m_nOffsetChar + 1); UpdateCaret ();