}
text->insertInset(cur, inset);
+ InsetText * inset_text = inset->asInsetText();
+ if (inset_text) {
+ Font const & font = inset->inheritFont()
+ ? cur.bv().textMetrics(text).displayFont(cur.pit(), cur.pos())
+ : buffer.params().getFont();
+ inset_text->setOuterFont(cur.bv(), font.fontInfo());
+ }
+
if (edit)
inset->edit(cur, true);
cur.buffer()->errors("Paste");
cur.clearSelection(); // bug 393
cur.finishUndo();
- InsetText * inset_text = inset->asInsetText();
if (inset_text) {
inset_text->fixParagraphsFont();
cur.pos() = 0;
// inside it.
doInsertInset(cur, this, cmd, true, true);
cur.posForward();
- /* The font of the inset is computed in metrics(), and this is
- * used to compute the height of the caret (because the font
- * is stored in TextMetrics::font_). When we insert, we have
- * to make sure that metrics are computed so that the caret
- * height is correct. Arguably, this is hackish.*/
- bv->processUpdateFlags(Update::SinglePar);
cur.setCurrentFont();
// Some insets are numbered, others are shown in the outline pane so
// let's update the labels and the toc backend.
}
}
WordLangTuple wl(word, language);
- bool const has_item = bv->buffer().params().spellignored(wl);
- if (!has_item) {
+ if (!bv->buffer().params().spellignored(wl)) {
cur.recordUndoBufferParams();
bv->buffer().params().spellignore().push_back(wl);
cur.recordUndo();
break;
}
+ case LFUN_SPELLING_REMOVE_LOCAL: {
+ Language const * language = getLanguage(cur, cmd.getArg(1));
+ docstring word = from_utf8(cmd.getArg(0));
+ if (word.empty()) {
+ word = cur.selectionAsString(false);
+ if (word.size() > 100)
+ break;
+ if (word.empty()) {
+ // Get word or selection
+ selectWordWhenUnderCursor(cur, WHOLE_WORD);
+ word = cur.selectionAsString(false);
+ }
+ }
+ WordLangTuple wl(word, language);
+ bool has_item = false;
+ vector<WordLangTuple>::const_iterator it = bv->buffer().params().spellignore().begin();
+ for (; it != bv->buffer().params().spellignore().end(); ++it) {
+ if (it->lang()->code() != wl.lang()->code())
+ continue;
+ if (it->word() == wl.word()) {
+ has_item = true;
+ break;
+ }
+ }
+ if (has_item) {
+ cur.recordUndoBufferParams();
+ bv->buffer().params().spellignore().erase(it);
+ cur.recordUndo();
+ // trigger re-check
+ WordLangTuple wl;
+ docstring_list suggestions;
+ Paragraph const & par = cur.paragraph();
+ pos_type from = cur.pos();
+ pos_type to = from;
+ par.spellCheck(from, to, wl, suggestions, true, true);
+ }
+ break;
+ }
+
case LFUN_SPELLING_IGNORE: {
Language const * language = getLanguage(cur, cmd.getArg(1));
case LFUN_SPELLING_ADD:
case LFUN_SPELLING_ADD_LOCAL:
+ case LFUN_SPELLING_REMOVE_LOCAL:
case LFUN_SPELLING_IGNORE:
case LFUN_SPELLING_REMOVE:
enable = theSpellChecker() != nullptr;