From: Jean-Marc Lasgouttes Date: Sun, 12 Jul 2020 13:37:58 +0000 (+0200) Subject: Improve drawing of macro template frame X-Git-Tag: lyx-2.4.0dev-acb2ca7b~612 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=1c956cdc1696139e417936b668c9790f627e1ce1;p=features.git Improve drawing of macro template frame Use Inset::xxxOffset as offsets and draw the frame in the middle of the empty space. Fixes bug #9657. --- diff --git a/src/mathed/InsetMathMacroTemplate.cpp b/src/mathed/InsetMathMacroTemplate.cpp index 62561b62fe..6c109696a7 100644 --- a/src/mathed/InsetMathMacroTemplate.cpp +++ b/src/mathed/InsetMathMacroTemplate.cpp @@ -574,9 +574,9 @@ void InsetMathMacroTemplate::metrics(MetricsInfo & mi, Dimension & dim) const if (macro) macro->unlock(); - dim.wid += 6; - dim.des += 2; - dim.asc += 2; + dim.wid += leftOffset(mi.base.bv) + rightOffset(mi.base.bv);; + dim.des += bottomOffset(mi.base.bv); + dim.asc += topOffset(mi.base.bv); } @@ -590,17 +590,19 @@ void InsetMathMacroTemplate::draw(PainterInfo & pi, int x, int y) const Dimension const dim = dimension(*pi.base.bv); // draw outer frame - int const a = y - dim.asc + 1; - int const w = dim.wid - 2; - int const h = dim.height() - 2; - pi.pain.rectangle(x + 1, a, w, h, Color_mathframe); + int const hoffset = leftOffset(pi.base.bv) + rightOffset(pi.base.bv); + int const voffset = topOffset(pi.base.bv) + bottomOffset(pi.base.bv); + int const a = y - dim.asc + topOffset(pi.base.bv) / 2; + int const w = dim.wid - (hoffset - hoffset / 2); + int const h = dim.height() - (voffset - voffset / 2); + pi.pain.rectangle(x + leftOffset(pi.base.bv) / 2, a, w, h, Color_mathframe); // just to be sure: set some dummy values for coord cache for (idx_type i = 0; i < nargs(); ++i) cell(i).setXY(*pi.base.bv, x, y); // draw contents - look_.draw(pi, x + 3, y); + look_.draw(pi, x + leftOffset(pi.base.bv), y); }