+ Paragraph /*const*/ & par = *cursor.par();
+ pos_type const pos = cursor.pos();
+
+ lyx::Assert(par.getInset(pos));
+
+ Inset const & inset(*par.getInset(pos));
+
+ LyXFont const & font = text.getFont(buffer_, &par, pos);
+
+ int const width = inset.width(bv_, font);
+ int const inset_x = font.isVisibleRightToLeft()
+ ? (cursor.x() - width) : cursor.x();
+
+ return Box(
+ inset_x + inset.scroll(),
+ inset_x + width,
+ cursor.y() - inset.ascent(bv_, font),
+ cursor.y() + inset.descent(bv_, font));
+}
+
+
+Inset * BufferView::Pimpl::checkInset(LyXText const & text,
+ LyXCursor const & cursor,
+ int & x, int & y) const
+{
+ pos_type const pos(cursor.pos());
+ Paragraph /*const*/ & par(*cursor.par());
+
+ if (pos >= par.size() || !par.isInset(pos)) {
+ return 0;
+ }
+
+ Inset /*const*/ * inset = par.getInset(pos);
+
+ if (!isEditableInset(inset)) {