diff --git a/src/frontends/qt4/GuiWorkArea.cpp b/src/frontends/qt4/GuiWorkArea.cpp index 0be7bad473..4e7197fb7c 100644 --- a/src/frontends/qt4/GuiWorkArea.cpp +++ b/src/frontends/qt4/GuiWorkArea.cpp @@ -662,6 +662,19 @@ bool GuiWorkArea::event(QEvent * e) void GuiWorkArea::contextMenuEvent(QContextMenuEvent * e) { QPoint pos = e->pos(); + Cursor const & cur = buffer_view_->cursor(); + if (e->reason() == QContextMenuEvent::Keyboard && cur.inTexted()) { + // Do not access the context menu of math right in front of before + // the cursor. This does not work when the cursor is in text. + Inset * inset = cur.paragraph().getInset(cur.pos()); + if (inset && inset->asInsetMath()) + --pos.rx(); + else if (cur.pos() > 0) { + Inset * inset = cur.paragraph().getInset(cur.pos() - 1); + if (inset) + ++pos.rx(); + } + } docstring name = buffer_view_->contextMenu(pos.x(), pos.y()); if (name.empty()) { QAbstractScrollArea::contextMenuEvent(e); @@ -1152,7 +1165,8 @@ QVariant GuiWorkArea::inputMethodQuery(Qt::InputMethodQuery query) const cur_r = cursor_->rect(); if (preedit_lines_ != 1) cur_r.moveLeft(10); - cur_r.moveBottom(cur_r.bottom() + cur_r.height() * preedit_lines_); + cur_r.moveBottom(cur_r.bottom() + + cur_r.height() * (preedit_lines_ - 1)); // return lower right of cursor in LyX. return cur_r; default: