-
-void emph(BufferView * bv)
-{
- LyXFont font(LyXFont::ALL_IGNORE);
- font.setEmph(LyXFont::TOGGLE);
- toggleAndShow(bv, font);
-}
-
-
-void bold(BufferView * bv)
-{
- LyXFont font(LyXFont::ALL_IGNORE);
- font.setSeries(LyXFont::BOLD_SERIES);
- toggleAndShow(bv, font);
-}
-
-
-void noun(BufferView * bv)
-{
- LyXFont font(LyXFont::ALL_IGNORE);
- font.setNoun(LyXFont::TOGGLE);
- toggleAndShow(bv, font);
-}
-
-
-void number(BufferView * bv)
-{
- LyXFont font(LyXFont::ALL_IGNORE);
- font.setNumber(LyXFont::TOGGLE);
- toggleAndShow(bv, font);
-}
-
-void lang(BufferView * bv, string const & l)
-{
- LyXFont font(LyXFont::ALL_IGNORE);
- Language const * lang = languages.getLanguage(l);
- if (!lang)
- return;
-
- font.setLanguage(lang);
- toggleAndShow(bv, font);
-}
-
-
-bool changeDepth(BufferView * bv, LyXText * text, DEPTH_CHANGE type, bool test_only)
-{
- if (!bv->available() || !text)
- return false;
-
- if (test_only)
- return text->changeDepth(type, true);
-
- bool const changed = text->changeDepth(type, false);
- if (text->inset_owner)
- bv->updateInset((InsetOld *)text->inset_owner);
- bv->update();
- return changed;
-}
-
-
-void code(BufferView * bv)
-{
- LyXFont font(LyXFont::ALL_IGNORE);
- font.setFamily(LyXFont::TYPEWRITER_FAMILY); // no good
- toggleAndShow(bv, font);
+ // Add contribution of initial rows of outermost paragraph
+ CursorSlice const & sl = dit[0];
+ Paragraph const & par = sl.text()->getPar(sl.pit());
+ y -= par.rows()[0].ascent();
+#if 1
+ size_t rend;
+ if (sl.pos() > 0 && dit.depth() == 1) {
+ int pos = sl.pos();
+ if (pos && boundary)
+ --pos;
+// lyxerr << "coordOffset: boundary:" << boundary << " depth:" << dit.depth() << " pos:" << pos << " sl.pos:" << sl.pos() << std::endl;
+ rend = par.pos2row(pos);
+ } else
+ rend = par.pos2row(sl.pos());
+#else
+ size_t rend = par.pos2row(sl.pos());
+#endif
+ for (size_t rit = 0; rit != rend; ++rit)
+ y += par.rows()[rit].height();
+ y += par.rows()[rend].ascent();
+ x += dit.bottom().text()->cursorX(dit.bottom(), boundary && dit.depth() == 1);
+ // The following correction should not be there at all.
+ // The cursor looks much better with the -1, though.
+ --x;
+ return Point(x, y);