From 7a9a056767e7e3c46f01e7eeea4930681e803413 Mon Sep 17 00:00:00 2001 From: Takashi Sawanaka Date: Sun, 10 Oct 2021 08:54:53 +0900 Subject: [PATCH] Fix issue #998: Cannot resize last column with UI --- Externals/crystaledit/editlib/ccrystaltextbuffer.h | 2 +- Externals/crystaledit/editlib/ccrystaltextview.cpp | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/Externals/crystaledit/editlib/ccrystaltextbuffer.h b/Externals/crystaledit/editlib/ccrystaltextbuffer.h index 664ff466d..7849cd1f1 100644 --- a/Externals/crystaledit/editlib/ccrystaltextbuffer.h +++ b/Externals/crystaledit/editlib/ccrystaltextbuffer.h @@ -314,7 +314,7 @@ public : } int GetColumnWidth (int nColumnIndex) const; void SetColumnWidth (int nColumnIndex, int nColumnWidth); - std::vector GetColumnWidths () const { return m_pSharedTableProps->m_aColumnWidths; } + const std::vector& GetColumnWidths () const { return m_pSharedTableProps->m_aColumnWidths; } void SetColumnWidths (const std::vector& columnWidths); int GetColumnCount (int nLineIndex) const; void SetAllowNewlinesInQuotes (bool bAllowNewlinesInQuotes) { m_bAllowNewlinesInQuotes = bAllowNewlinesInQuotes; } diff --git a/Externals/crystaledit/editlib/ccrystaltextview.cpp b/Externals/crystaledit/editlib/ccrystaltextview.cpp index 8c00bb9fe..313c61da4 100644 --- a/Externals/crystaledit/editlib/ccrystaltextview.cpp +++ b/Externals/crystaledit/editlib/ccrystaltextview.cpp @@ -88,6 +88,7 @@ #include "StdAfx.h" #include #include +#include #include #include /* IME */ #include "editcmd.h" @@ -4103,8 +4104,9 @@ RecalcHorzScrollBar (bool bPositionOnly /*= false*/, bool bRedraw /*= true */) si.cbSize = sizeof (si); const int nScreenChars = GetScreenChars(); + const TextLayoutMode layoutMode = GetTextLayoutMode (); - if (GetTextLayoutMode () == TEXTLAYOUT_WORDWRAP) + if (layoutMode == TEXTLAYOUT_WORDWRAP) { if (m_nOffsetChar > nScreenChars) { @@ -4119,7 +4121,12 @@ RecalcHorzScrollBar (bool bPositionOnly /*= false*/, bool bRedraw /*= true */) return; } - const int nMaxLineLen = GetMaxLineLength (m_nTopLine, GetScreenLines()); + int nMaxLineLen = GetMaxLineLength (m_nTopLine, GetScreenLines()); + if (layoutMode == TEXTLAYOUT_TABLE_NOWORDWRAP || layoutMode == TEXTLAYOUT_TABLE_WORDWRAP) + { + auto widths = m_pTextBuffer->GetColumnWidths (); + nMaxLineLen = (std::max)(nMaxLineLen, std::accumulate (widths.begin (), widths.end (), 0)); + } if (bPositionOnly) { -- 2.11.0