}
-void MathRow::metrics(MetricsInfo & mi, Dimension & dim)
+bool MathRow::metrics(MetricsInfo & mi, Dimension & dim)
{
+ bool has_caret = false;
+
+ dim.wid = 0;
// In order to compute the dimension of macros and their
// arguments, it is necessary to keep track of them.
vector<pair<InsetMath const *, Dimension>> dim_insets;
d.wid = e.before + e.after;
e.inset->beforeMetrics();
}
- if (e.ar)
+ if (e.ar) {
dim_arrays.push_back(make_pair(e.ar, Dimension()));
+ has_caret |= e.ar->hasCaret(mi.base.bv);
+ }
break;
case END:
if (e.inset) {
dim.wid += mathed_string_width(font, e.compl_text);
}
LATTEST(dim_insets.empty() && dim_arrays.empty());
+ return has_caret;
}
if (!s1.empty()) {
f.setColor(Color_inlinecompletion);
- pi.pain.text(x, y, s1, f);
+ // 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);
x += mathed_string_width(f, s1);
}
if (!s2.empty()) {
f.setColor(Color_nonunique_inlinecompletion);
- pi.pain.text(x, y, s2, f);
+ pi.pain.text(x - e.after, y, s2, f);
x += mathed_string_width(f, s2);
}
}