dispatch(FuncRequest(LFUN_SELF_INSERT, arg,
FuncRequest::KEYBOARD));
LYXERR(Debug::KEY, "SelfInsert arg[`" << to_utf8(arg) << "']");
+ lyx_view_->updateCompletion(true, true);
}
} else {
dispatch(func);
+ if (func.action == LFUN_CHAR_DELETE_BACKWARD)
+ // backspace is not a self-insertion. But it
+ // still should not hide the completion popup.
+ // FIXME: more clever way to detect those movements
+ lyx_view_->updateCompletion(false, true);
+ else
+ lyx_view_->updateCompletion(false, false);
}
- lyx_view_->restartCursor();
+ if (lyx_view_)
+ lyx_view_->restartCursor();
}
case LFUN_BUFFER_WRITE:
case LFUN_BUFFER_WRITE_AS:
case LFUN_SPLIT_VIEW:
+ case LFUN_CLOSE_TAB_GROUP:
+ case LFUN_COMPLETION_POPUP:
+ case LFUN_COMPLETION_INLINE:
+ case LFUN_COMPLETION_COMPLETE:
if (lyx_view_)
return lyx_view_->getStatus(cmd);
enable = false;
}
-void loadTextClass(string const & name)
+void loadTextClass(string const & name, string const & buf_path)
{
pair<bool, textclass_type> const tc_pair =
textclasslist.numberOfClass(name);
textclass_type const tc = tc_pair.second;
- if (!textclasslist[tc].load()) {
+ if (!textclasslist[tc].load(buf_path)) {
docstring s = bformat(_("The document class %1$s."
"could not be loaded."),
from_utf8(textclasslist[tc].name()));
BOOST_ASSERT(lyx_view_);
Buffer * buffer = lyx_view_->buffer();
- loadTextClass(argument);
+ loadTextClass(argument, buffer->filePath());
pair<bool, textclass_type> const tc_pair =
textclasslist.numberOfClass(argument);
}
case LFUN_TEXTCLASS_LOAD:
- loadTextClass(argument);
+ loadTextClass(argument, lyx_view_->buffer()->filePath());
break;
case LFUN_LYXRC_APPLY: {
}
// Let the current Cursor dispatch its own actions.
+ Cursor old = view()->cursor();
view()->cursor().getPos(cursorPosBeforeDispatchX_,
cursorPosBeforeDispatchY_);
view()->cursor().dispatch(cmd);
- updateFlags = view()->cursor().result().update();
- if (!view()->cursor().result().dispatched()) {
- // No update needed in this case (e.g. when reaching
- // top of document.
- updateFlags = Update::None;
+
+ // notify insets we just left
+ if (view()->cursor() != old) {
+ old.fixIfBroken();
+ bool badcursor = notifyCursorLeaves(old, view()->cursor());
+ if (badcursor)
+ view()->cursor().fixIfBroken();
}
+
+ updateFlags = view()->cursor().result().update();
}
if (lyx_view_ && lyx_view_->buffer()) {
case LyXRC::RC_BIBTEX_COMMAND:
case LyXRC::RC_BINDFILE:
case LyXRC::RC_CHECKLASTFILES:
+ case LyXRC::RC_COMPLETION_INLINE_DELAY:
+ case LyXRC::RC_COMPLETION_INLINE_DOTS:
+ case LyXRC::RC_COMPLETION_INLINE_MATH:
+ case LyXRC::RC_COMPLETION_INLINE_TEXT:
+ case LyXRC::RC_COMPLETION_POPUP_AFTER_COMPLETE:
+ case LyXRC::RC_COMPLETION_POPUP_DELAY:
+ case LyXRC::RC_COMPLETION_POPUP_MATH:
+ case LyXRC::RC_COMPLETION_POPUP_TEXT:
case LyXRC::RC_USELASTFILEPOS:
case LyXRC::RC_LOADSESSION:
case LyXRC::RC_CHKTEX_COMMAND: