[LyX/master] force LTR direction in mathed draw
Udi Fogiel <[email protected]> Sun, 02 Aug 2026 14:47:21 +0000
| Newsgroups | gmane.editors.lyx.cvs |
|---|---|
| Message-ID | <[email protected]> |
commit 08b4a01fd33f964b84f9004df652a5060105e615 Author: Udi Fogiel <[email protected]> Date: Sun Aug 2 17:46:23 2026 +0300 force LTR direction in mathed draw fixes #12928 --- src/MetricsInfo.cpp | 10 ++++++---- src/MetricsInfo.h | 8 ++++---- src/mathed/InsetMathBrace.cpp | 4 ++-- src/mathed/InsetMathChar.cpp | 6 +++--- src/mathed/InsetMathHull.cpp | 4 ++-- src/mathed/InsetMathMacro.cpp | 10 +++++----- src/mathed/InsetMathMacroTemplate.cpp | 2 +- src/mathed/InsetMathNumber.cpp | 2 +- src/mathed/InsetMathScript.cpp | 2 +- src/mathed/InsetMathSpecialChar.cpp | 4 ++-- src/mathed/InsetMathString.cpp | 2 +- src/mathed/MathRow.cpp | 6 +++--- src/mathed/MathSupport.cpp | 4 ++-- 13 files changed, 33 insertions(+), 31 deletions(-) diff --git a/src/MetricsInfo.cpp b/src/MetricsInfo.cpp index faca0ea183..484f6be0c6 100644 --- a/src/MetricsInfo.cpp +++ b/src/MetricsInfo.cpp @@ -205,15 +205,17 @@ PainterInfo::PainterInfo(BufferView * bv, lyx::frontend::Painter & painter) {} -void PainterInfo::draw(int x, int y, char_type c) +void PainterInfo::mathDraw(int x, int y, char_type c) { - pain.text(x, y, c, base.font); + // Math content is always LTR. + pain.text(x, y, c, base.font, frontend::Painter::LtR); } -void PainterInfo::draw(int x, int y, docstring const & str) +void PainterInfo::mathDraw(int x, int y, docstring const & str) { - pain.text(x, y, str, base.font); + // Math content is always LTR. + pain.text(x, y, str, base.font, frontend::Painter::LtR); } diff --git a/src/MetricsInfo.h b/src/MetricsInfo.h index 1cb4554b69..4c340dbaa7 100644 --- a/src/MetricsInfo.h +++ b/src/MetricsInfo.h @@ -122,10 +122,10 @@ class PainterInfo { public: /// PainterInfo(BufferView * bv, frontend::Painter & pain); - /// - void draw(int x, int y, char_type c); - /// - void draw(int x, int y, docstring const & str); + /// Draw a math character (always LTR, mathed-only) + void mathDraw(int x, int y, char_type c); + /// Draw a math string (always LTR, mathed-only) + void mathDraw(int x, int y, docstring const & str); /// Draw preedit char using char_format_index for format /// f is used to get the font size in the text mode of mathed void draw(int x, int y, char_type c, frontend::InputMethod * im, diff --git a/src/mathed/InsetMathBrace.cpp b/src/mathed/InsetMathBrace.cpp index 3a3d4034c3..c4c74ab34b 100644 --- a/src/mathed/InsetMathBrace.cpp +++ b/src/mathed/InsetMathBrace.cpp @@ -69,10 +69,10 @@ void InsetMathBrace::draw(PainterInfo & pi, int x, int y) const font.setShape(UP_SHAPE); font.setColor(Color_latex); Dimension t = theFontMetrics(font).dimension('{'); - pi.pain.text(x, y, '{', font); + pi.pain.text(x, y, '{', font, frontend::Painter::LtR); cell(0).draw(pi, x + t.wid, y); Dimension const & dim0 = cell(0).dimension(*pi.base.bv); - pi.pain.text(x + t.wid + dim0.width(), y, '}', font); + pi.pain.text(x + t.wid + dim0.width(), y, '}', font, frontend::Painter::LtR); } diff --git a/src/mathed/InsetMathChar.cpp b/src/mathed/InsetMathChar.cpp index 84c0be9a09..bcfc5fd383 100644 --- a/src/mathed/InsetMathChar.cpp +++ b/src/mathed/InsetMathChar.cpp @@ -165,7 +165,7 @@ void InsetMathChar::draw(PainterInfo & pi, int x, int y) const return; } else if (!slanted(char_) && pi.base.fontname == "mathnormal") { Changer dummy = pi.base.font.changeShape(UP_SHAPE); - pi.draw(x, y, char_); + pi.mathDraw(x, y, char_); return; } else if (!isASCII(char_) && Encodings::unicodeCharInfo(char_).isUnicodeSymbol()) { bool special_font = (pi.base.fontname == "mathbb" || @@ -179,7 +179,7 @@ void InsetMathChar::draw(PainterInfo & pi, int x, int y) const Changer dummy2 = Encodings::isMathAlpha(char_) ? noChange() : pi.base.font.changeShape(UP_SHAPE); - pi.draw(x, y, char_); + pi.mathDraw(x, y, char_); return; } } @@ -187,7 +187,7 @@ void InsetMathChar::draw(PainterInfo & pi, int x, int y) const if (pi.base.fontname == "mathnormal") { x += max(-theFontMetrics(pi.base.font).lbearing(char_), 0); } - pi.draw(x, y, char_); + pi.mathDraw(x, y, char_); } diff --git a/src/mathed/InsetMathHull.cpp b/src/mathed/InsetMathHull.cpp index e1638a3493..7b73455987 100644 --- a/src/mathed/InsetMathHull.cpp +++ b/src/mathed/InsetMathHull.cpp @@ -698,7 +698,7 @@ void InsetMathHull::draw(PainterInfo & pi, int x, int y) const pi.pain.fillRectangle(pi.leftx, yy - dimnl.asc, dimnl.width(), dimnl.height(), pi.selected_left ? Color_selection : pi.background_color); - pi.draw(pi.leftx, yy, nl); + pi.mathDraw(pi.leftx, yy, nl); } else { ColorCode const col = pi.selected_right ? Color_selectiontext @@ -709,7 +709,7 @@ void InsetMathHull::draw(PainterInfo & pi, int x, int y) const pi.pain.fillRectangle(pi.rightx - dimnl.wid, yy - dimnl.asc, dimnl.width(), dimnl.height(), pi.selected_right ? Color_selection : pi.background_color); - pi.draw(pi.rightx - dimnl.wid, yy, nl); + pi.mathDraw(pi.rightx - dimnl.wid, yy, nl); } } } diff --git a/src/mathed/InsetMathMacro.cpp b/src/mathed/InsetMathMacro.cpp index 8495b53b2c..c8b92b984f 100644 --- a/src/mathed/InsetMathMacro.cpp +++ b/src/mathed/InsetMathMacro.cpp @@ -755,10 +755,10 @@ void InsetMathMacro::draw(PainterInfo & pi, int x, int y) const if (d->displayMode_ == DISPLAY_INIT || d->displayMode_ == DISPLAY_INTERACTIVE_INIT) { Changer dummy = pi.base.changeFontSet("lyxtex"); - pi.pain.text(x, y, from_ascii("\\") + name(), pi.base.font); + pi.pain.text(x, y, from_ascii("\\") + name(), pi.base.font, frontend::Painter::LtR); } else if (d->displayMode_ == DISPLAY_UNFOLDED) { Changer dummy = pi.base.changeFontSet("lyxtex"); - pi.pain.text(x, y, from_ascii("\\"), pi.base.font); + pi.pain.text(x, y, from_ascii("\\"), pi.base.font, frontend::Painter::LtR); x += mathed_string_width(pi.base.font, from_ascii("\\")) + 1; cell(0).draw(pi, x, y); } else if (lyxrc.macro_edit_style == LyXRC::MACRO_EDIT_LIST @@ -777,7 +777,7 @@ void InsetMathMacro::draw(PainterInfo & pi, int x, int y) const // draw label docstring label = from_ascii("Macro \\") + name() + from_ascii(": "); - pi.pain.text(x, y, label, labelFont); + pi.pain.text(x, y, label, labelFont, frontend::Painter::LtR); x += mathed_string_width(labelFont, label); // draw definition @@ -798,9 +798,9 @@ void InsetMathMacro::draw(PainterInfo & pi, int x, int y) const // draw label str[1] = '1' + i; - pi.pain.text(x, y, str, labelFont); + pi.pain.text(x, y, str, labelFont, frontend::Painter::LtR); x += strw1; - pi.pain.text(x, y, from_ascii(":"), labelFont); + pi.pain.text(x, y, from_ascii(":"), labelFont, frontend::Painter::LtR); x += strw2; // draw parameter diff --git a/src/mathed/InsetMathMacroTemplate.cpp b/src/mathed/InsetMathMacroTemplate.cpp index 1d73fd2cf4..9f8d7c90c7 100644 --- a/src/mathed/InsetMathMacroTemplate.cpp +++ b/src/mathed/InsetMathMacroTemplate.cpp @@ -386,7 +386,7 @@ void InsetNameWrapper::draw(PainterInfo & pi, int x, int y) const Changer dummy2 = pi.base.font.changeColor(color); // draw backslash - pi.pain.text(x, y, from_ascii("\\"), pi.base.font); + pi.pain.text(x, y, from_ascii("\\"), pi.base.font, frontend::Painter::LtR); x += mathed_string_width(pi.base.font, from_ascii("\\")); // draw name diff --git a/src/mathed/InsetMathNumber.cpp b/src/mathed/InsetMathNumber.cpp index 80f13c4c2e..c54a4637d8 100644 --- a/src/mathed/InsetMathNumber.cpp +++ b/src/mathed/InsetMathNumber.cpp @@ -40,7 +40,7 @@ void InsetMathNumber::metrics(MetricsInfo & mi, Dimension & dim) const void InsetMathNumber::draw(PainterInfo & pi, int x, int y) const { - pi.draw(x, y, str_); + pi.mathDraw(x, y, str_); } diff --git a/src/mathed/InsetMathScript.cpp b/src/mathed/InsetMathScript.cpp index 1ccdf4f3cc..05a74ac377 100644 --- a/src/mathed/InsetMathScript.cpp +++ b/src/mathed/InsetMathScript.cpp @@ -353,7 +353,7 @@ void InsetMathScript::draw(PainterInfo & pi, int x, int y) const else { nuc().setXY(bv, x + dxx(bv), y); if (editing(&bv)) - pi.draw(x + dxx(bv), y, char_type('.')); + pi.mathDraw(x + dxx(bv), y, char_type('.')); } Changer dummy = pi.base.changeScript(); if (hasUp()) diff --git a/src/mathed/InsetMathSpecialChar.cpp b/src/mathed/InsetMathSpecialChar.cpp index e416dd6f3e..571503eb05 100644 --- a/src/mathed/InsetMathSpecialChar.cpp +++ b/src/mathed/InsetMathSpecialChar.cpp @@ -69,9 +69,9 @@ void InsetMathSpecialChar::draw(PainterInfo & pi, int x, int y) const { if (pi.base.fontname == "mathnormal") { Changer dummy = pi.base.font.changeShape(UP_SHAPE); - pi.draw(x, y, char_); + pi.mathDraw(x, y, char_); } else { - pi.draw(x, y, char_); + pi.mathDraw(x, y, char_); } } diff --git a/src/mathed/InsetMathString.cpp b/src/mathed/InsetMathString.cpp index 31dc0cabf5..64f9a7e1de 100644 --- a/src/mathed/InsetMathString.cpp +++ b/src/mathed/InsetMathString.cpp @@ -46,7 +46,7 @@ void InsetMathString::metrics(MetricsInfo & mi, Dimension & dim) const void InsetMathString::draw(PainterInfo & pi, int x, int y) const { - pi.draw(x, y, str_); + pi.mathDraw(x, y, str_); } diff --git a/src/mathed/MathRow.cpp b/src/mathed/MathRow.cpp index be454a80a3..6ace5403cb 100644 --- a/src/mathed/MathRow.cpp +++ b/src/mathed/MathRow.cpp @@ -117,7 +117,7 @@ void drawMarkers(PainterInfo const & pi, MathRow::Element const & e, mathed_string_dim(font, e.inset->name(), namedim); pi.pain.fillRectangle(l, y + dim.des - namedim.height() - 2, dim.wid, namedim.height() + 2, Color_mathmacrobg); - pi.pain.text(l, y + dim.des - namedim.des - 1, e.inset->name(), font); + pi.pain.text(l, y + dim.des - namedim.des - 1, e.inset->name(), font, frontend::Painter::LtR); } // Color for corners @@ -408,12 +408,12 @@ void MathRow::draw(PainterInfo & pi, int x, int const y) const f.setColor(Color_inlinecompletion); // offset the text by e.after to make sure that the // spacing is after the completion, not before. - pi.pain.text(x - e.after, y, s1, f); + pi.pain.text(x - e.after, y, s1, f, frontend::Painter::LtR); x += mathed_string_width(f, s1); } if (!s2.empty()) { f.setColor(Color_nonunique_inlinecompletion); - pi.pain.text(x - e.after, y, s2, f); + pi.pain.text(x - e.after, y, s2, f, frontend::Painter::LtR); x += mathed_string_width(f, s2); } } diff --git a/src/mathed/MathSupport.cpp b/src/mathed/MathSupport.cpp index 920a15c828..8a0475c56d 100644 --- a/src/mathed/MathSupport.cpp +++ b/src/mathed/MathSupport.cpp @@ -814,9 +814,9 @@ void mathedSymbolDraw(PainterInfo & pi, int x, int y, latexkeys const * sym) pi.base.fontname != "mathcal" && pi.base.fontname != "mathscr"); Changer dummy = change_font ? pi.base.changeFontSet(font) : noChange(); - pi.draw(x, y, mathedSymbol(pi.base, sym)); + pi.mathDraw(x, y, mathedSymbol(pi.base, sym)); if (bold_upcase_greek) - pi.draw(x + 1, y, mathedSymbol(pi.base, sym)); + pi.mathDraw(x + 1, y, mathedSymbol(pi.base, sym)); } -- lyx-cvs mailing list [email protected] https://lists.lyx.org/mailman/listinfo/lyx-cvs