From: Daniel Ramoeller Date: Tue, 11 Apr 2023 11:21:23 +0000 (+0200) Subject: Automatically adjust tab stop width X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=bb16efc07ef76246616aacea7bb40ac260b26beb;p=features.git Automatically adjust tab stop width Extend tab stops to the same indentation point instead of a fixed number of spaces. Fix for bug #12736 --- diff --git a/src/TextMetrics.cpp b/src/TextMetrics.cpp index f4241181c2..068eb31200 100644 --- a/src/TextMetrics.cpp +++ b/src/TextMetrics.cpp @@ -899,10 +899,13 @@ Row TextMetrics::tokenizeParagraph(pit_type const pit) const FontMetrics const & fm = theFontMetrics(text_->labelFont(par)); int const wid = fm.width(par.layout().labelsep); row.addMarginSpace(i, wid, *fi, par.lookupChange(i)); - } else if (c == '\t') - row.addSpace(i, theFontMetrics(*fi).width(from_ascii(" ")), + } else if (c == '\t') { + // Make tab stop size adjust automatically depending on char number + int tabStopWidth = 4; + std::string s = std::string(tabStopWidth - i % tabStopWidth, ' '); + row.addSpace(i, theFontMetrics(*fi).width(from_ascii(s)), *fi, par.lookupChange(i)); - else if (c == 0x2028 || c == 0x2029) { + } else if (c == 0x2028 || c == 0x2029) { /** * U+2028 LINE SEPARATOR * U+2029 PARAGRAPH SEPARATOR