*/
#include <config.h>
-#include <vector>
#include "LyXFunc.h"
#include "Converter.h"
#include "Cursor.h"
#include "CutAndPaste.h"
-#include "support/debug.h"
#include "DispatchResult.h"
#include "Encoding.h"
#include "ErrorList.h"
#include "Format.h"
#include "FuncRequest.h"
#include "FuncStatus.h"
-#include "support/gettext.h"
#include "InsetIterator.h"
#include "Intl.h"
#include "KeyMap.h"
#include "Server.h"
#include "Session.h"
#include "TextClassList.h"
-#include "ToolbarBackend.h"
#include "insets/InsetBox.h"
#include "insets/InsetBranch.h"
#include "frontends/LyXView.h"
#include "frontends/Selection.h"
+#include "support/debug.h"
#include "support/environment.h"
-#include "support/FileFilterList.h"
#include "support/FileName.h"
#include "support/filetools.h"
+#include "support/gettext.h"
#include "support/lstrings.h"
#include "support/Path.h"
#include "support/Package.h"
#include "support/os.h"
#include <sstream>
+#include <vector>
using namespace std;
using namespace lyx::support;
namespace Alert = frontend::Alert;
-extern bool quitting;
-extern bool use_gui;
-
namespace {
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();
break;
case LFUN_TOOLBAR_TOGGLE:
- case LFUN_MENUBAR_TOGGLE:
- case LFUN_STATUSBAR_TOGGLE:
case LFUN_INSET_APPLY:
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;
case LFUN_BUFFER_AUTO_SAVE:
case LFUN_RECONFIGURE:
case LFUN_HELP_OPEN:
- case LFUN_FILE_NEW:
case LFUN_FILE_OPEN:
case LFUN_DROP_LAYOUTS_CHOICE:
case LFUN_MENU_OPEN:
case LFUN_DIALOG_HIDE:
case LFUN_DIALOG_DISCONNECT_INSET:
case LFUN_BUFFER_CHILD_OPEN:
+ case LFUN_UI_TOGGLE:
case LFUN_TOGGLE_CURSOR_FOLLOWS_SCROLLBAR:
case LFUN_KEYMAP_OFF:
case LFUN_KEYMAP_PRIMARY:
reloadBuffer();
break;
- // --- buffers ----------------------------------------
-
- case LFUN_FILE_NEW: {
- BOOST_ASSERT(lyx_view_);
- string name;
- string tmpname = split(argument, name, ':'); // Split filename
- Buffer * const b = newFile(name, tmpname);
- if (b)
- lyx_view_->setBuffer(b);
- updateFlags = Update::None;
- break;
- }
-
// --- lyxserver commands ----------------------------
case LFUN_SERVER_GET_NAME:
BOOST_ASSERT(lyx_view_ && lyx_view_->buffer());
}
// 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:
case LyXRC::RC_USE_SPELL_LIB:
case LyXRC::RC_VIEWDVI_PAPEROPTION:
case LyXRC::RC_SORT_LAYOUTS:
+ case LyXRC::RC_FULL_SCREEN_LIMIT:
+ case LyXRC::RC_FULL_SCREEN_SCROLLBAR:
+ case LyXRC::RC_FULL_SCREEN_TABBAR:
+ case LyXRC::RC_FULL_SCREEN_TOOLBARS:
+ case LyXRC::RC_FULL_SCREEN_WIDTH:
+ case LyXRC::RC_VISUAL_CURSOR:
case LyXRC::RC_VIEWER:
case LyXRC::RC_LAST:
break;