bool rtl = bv.textMetrics(sl.text()).isRTL(sl, boundary_i);
if (rtl)
x -= lastw;
+ // remember width for the case that sl.inset() is positioned in an RTL inset
+ Dimension const & dim = bv.parMetrics(sl.text(), sl.pit()).
+ insetDimension(&sl.inset());
+ lastw = dim.wid;
+ } else {
+ // remember width for the case that sl.inset() is positioned in an RTL inset
+ Dimension const dim = sl.inset().dimension(bv);
+ lastw = dim.wid;
}
- // remember width for the case that sl.inset() is positioned in an RTL inset
- lastw = sl.inset().width();
-
//lyxerr << "Cursor::getPos, i: "
// << i << " x: " << xx << " y: " << y << endl;
}
{
// FIXME: it's be better to have something like TextMetrics::status().
TextMetrics const & tm = bv->textMetrics(dit.bottom().text());
- pit_type const pit = dit.bottom().pit();
- if (!tm.has(pit)) {
- if (dit.bottom().pit() < bv->anchor_ref())
- return CUR_ABOVE;
- else
- return CUR_BELOW;
- }
-
- ParagraphMetrics const & pm = tm.parMetrics(pit);
- if (pm.position() < 0)
+ int par_pos = tm.parPosition(dit.bottom().pit());
+ if (par_pos < 0)
return CUR_ABOVE;
- else if (pm.position() > bv->workHeight())
+ else if (par_pos > bv->workHeight())
return CUR_BELOW;
return CUR_INSIDE;
if (inset
&& find(codes.begin(), codes.end(), inset->lyxCode()) != codes.end()
&& (contents.empty() ||
- static_cast<InsetCommand const *>(inset)->getContents() == contents)) {
+ static_cast<InsetCommand const *>(inset)->getContents() == contents)) {
dit = tmpdit;
return true;
}