mirror of
https://git.lyx.org/repos/lyx.git
synced 2025-01-10 18:58:10 +00:00
When drawing macro names, enforce LtR direction
Add a Direction parameter to the Painter::text methods that take a FontInfo parameter. In drawStrRed and drawStrBlack, force the direction to LtR. Fixes bug #12905.
This commit is contained in:
parent
fcbbb138a2
commit
94c6d45b74
@ -65,10 +65,10 @@ public:
|
||||
void image(int, int, int, int, graphics::Image const &, bool) override {}
|
||||
|
||||
/// draw a string
|
||||
void text(int, int, docstring const &, FontInfo const &) override {}
|
||||
void text(int, int, docstring const &, FontInfo const &, Direction const = Auto) override {}
|
||||
|
||||
/// draw a char
|
||||
void text(int, int, char_type, FontInfo const &) override {}
|
||||
void text(int, int, char_type, FontInfo const &, Direction const = Auto) override {}
|
||||
|
||||
/// draw a string
|
||||
void text(int, int, docstring const &, Font const &, double, double) override {}
|
||||
|
@ -134,11 +134,16 @@ public:
|
||||
virtual void image(int x, int y, int w, int h,
|
||||
graphics::Image const & image, bool const revert_in_darkmode = false) = 0;
|
||||
|
||||
// Direction for painting text
|
||||
enum Direction { LtR, RtL, Auto };
|
||||
|
||||
/// draw a string at position x, y (y is the baseline).
|
||||
virtual void text(int x, int y, docstring const & str, FontInfo const & f) = 0;
|
||||
virtual void text(int x, int y, docstring const & str, FontInfo const & f,
|
||||
Direction const dir = Auto) = 0;
|
||||
|
||||
/// draw a char at position x, y (y is the baseline)
|
||||
virtual void text(int x, int y, char_type c, FontInfo const & f) = 0;
|
||||
virtual void text(int x, int y, char_type c, FontInfo const & f,
|
||||
Direction const dir = Auto) = 0;
|
||||
|
||||
/** draw a string at position x, y (y is the baseline). The
|
||||
* text direction is enforced by the \c Font.
|
||||
|
@ -282,15 +282,15 @@ void GuiPainter::image(int x, int y, int w, int h, graphics::Image const & i,
|
||||
}
|
||||
|
||||
|
||||
void GuiPainter::text(int x, int y, char_type c, FontInfo const & f)
|
||||
void GuiPainter::text(int x, int y, char_type c, FontInfo const & f, Direction const dir)
|
||||
{
|
||||
text(x, y, docstring(1, c), f);
|
||||
text(x, y, docstring(1, c), f, dir);
|
||||
}
|
||||
|
||||
|
||||
void GuiPainter::text(int x, int y, docstring const & s, FontInfo const & f)
|
||||
void GuiPainter::text(int x, int y, docstring const & s, FontInfo const & f, Direction const dir)
|
||||
{
|
||||
text(x, y, s, f, Auto, 0.0, 0.0);
|
||||
text(x, y, s, f, dir, 0.0, 0.0);
|
||||
}
|
||||
|
||||
|
||||
|
@ -116,10 +116,12 @@ public:
|
||||
lyx::graphics::Image const & image, bool const darkmode = false) override;
|
||||
|
||||
/// draw a string at position x, y (y is the baseline).
|
||||
void text(int x, int y, docstring const & str, FontInfo const & f) override;
|
||||
void text(int x, int y, docstring const & str, FontInfo const & f,
|
||||
Direction const dir = Auto) override;
|
||||
|
||||
/// draw a char at position x, y (y is the baseline)
|
||||
void text(int x, int y, char_type c, FontInfo const & f) override;
|
||||
void text(int x, int y, char_type c, FontInfo const & f,
|
||||
Direction const dir = Auto) override;
|
||||
|
||||
/** draw a string at position x, y (y is the baseline). The
|
||||
* text direction is enforced by the \c Font.
|
||||
@ -188,9 +190,6 @@ private:
|
||||
line_style ls = line_solid, int lw = thin_line,
|
||||
Qt::PenJoinStyle js = Qt::BevelJoin);
|
||||
|
||||
// Direction for painting text
|
||||
enum Direction { LtR, RtL, Auto };
|
||||
|
||||
// Real text() method
|
||||
void text(int x, int y, docstring const & s,
|
||||
FontInfo const & f, Direction const dir,
|
||||
|
@ -805,7 +805,7 @@ void drawStrRed(PainterInfo & pi, int x, int y, docstring const & str)
|
||||
FontInfo f = pi.base.font;
|
||||
augmentFont(f, "mathnormal");
|
||||
f.setColor(Color_latex);
|
||||
pi.pain.text(x, y, str, f);
|
||||
pi.pain.text(x, y, str, f, Painter::LtR);
|
||||
}
|
||||
|
||||
|
||||
@ -814,7 +814,7 @@ void drawStrBlack(PainterInfo & pi, int x, int y, docstring const & str)
|
||||
FontInfo f = pi.base.font;
|
||||
augmentFont(f, "mathnormal");
|
||||
f.setColor(Color_foreground);
|
||||
pi.pain.text(x, y, str, f);
|
||||
pi.pain.text(x, y, str, f, Painter::LtR);
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user