lyxerr << BOOST_CURRENT_FUNCTION
<< " Key [action="
<< func.action << "]["
- << keyseq->print() << ']'
+ << to_utf8(keyseq->print()) << ']'
<< endl;
}
// num_bytes == 0? (Lgb)
if (keyseq->length() > 1) {
- lyx_view_->message(from_utf8(keyseq->print()));
+ lyx_view_->message(keyseq->print());
}
case LFUN_WORD_FIND_FORWARD:
case LFUN_WORD_FIND_BACKWARD: {
BOOST_ASSERT(lyx_view_ && lyx_view_->view());
- static string last_search;
- string searched_string;
+ static docstring last_search;
+ docstring searched_string;
- if (!argument.empty()) {
- last_search = argument;
- searched_string = argument;
+ if (!cmd.argument().empty()) {
+ last_search = cmd.argument();
+ searched_string = cmd.argument();
} else {
searched_string = last_search;
}
break;
bool const fw = action == LFUN_WORD_FIND_FORWARD;
- string const data =
+ docstring const data =
find2string(searched_string, true, false, fw);
find(view(), FuncRequest(LFUN_WORD_FIND, data));
break;
case LFUN_COMMAND_PREFIX:
BOOST_ASSERT(lyx_view_);
- lyx_view_->message(from_utf8(keyseq->printOptions()));
+ lyx_view_->message(keyseq->printOptions());
break;
case LFUN_COMMAND_EXECUTE:
case LFUN_META_PREFIX:
meta_fake_bit = key_modifier::alt;
- setMessage(from_utf8(keyseq->print()));
+ setMessage(keyseq->print());
break;
case LFUN_BUFFER_TOGGLE_READ_ONLY:
break;
case LFUN_LYX_QUIT:
- // FIXME: this code needs to be transfered somewhere else
- // as lyx_view_ will most certainly be null and a same buffer
- // might be visible in more than one LyXView.
- if (lyx_view_ && lyx_view_->view()->buffer()) {
- // save cursor Position for opened files to .lyx/session
- LyX::ref().session().lastFilePos().save(FileName(lyx_view_->buffer()->fileName()),
- boost::tie(view()->cursor().pit(), view()->cursor().pos()) );
- }
-
- // save the geometry of the current view
- lyx_view_->saveGeometry();
- // quitting is triggered by the gui code (leaving the event loop)
- theApp()->gui().closeAllViews();
+ // quitting is triggered by the gui code
+ // (leaving the event loop).
+ if (theBufferList().quitWriteAll())
+ theApp()->gui().closeAllViews();
break;
case LFUN_TOC_VIEW: {
break;
case LFUN_SERVER_NOTIFY:
- dispatch_buffer = from_utf8(keyseq->print());
+ dispatch_buffer = keyseq->print();
theLyXServer().notifyClient(to_utf8(dispatch_buffer));
break;
InsetCommandParams p(name);
data = InsetCommandMailer::params2string(name, p);
} else if (name == "include") {
+ // data is the include type: one of "include",
+ // "input", "verbatiminput" or "verbatiminput*"
+ if (data.empty())
+ // default type is requested
+ data = "include";
InsetCommandParams p(data);
data = InsetIncludeMailer::params2string(p);
} else if (name == "box") {
case LFUN_WINDOW_CLOSE:
BOOST_ASSERT(lyx_view_);
BOOST_ASSERT(theApp());
+ // ask the user for saving changes or cancel quit
+ if (!theBufferList().quitWriteAll())
+ break;
lyx_view_->close();
- lyx_view_->closed(lyx_view_->id());
return;
case LFUN_BOOKMARK_GOTO: {
// BufferView::update() updates the ViewMetricsInfo and
// also initializes the position cache for all insets in
// (at least partially) visible top-level paragraphs.
- std::pair<bool, bool> needSecondUpdate
- = view()->update(updateFlags);
-
- // Redraw screen unless explicitly told otherwise.
- if (needSecondUpdate.first)
+ // We will redraw the screen only if needed.
+ if (view()->update(updateFlags)) {
// Buffer::changed() signals that a repaint is needed.
// The frontend (WorkArea) knows which area to repaint
// thanks to the ViewMetricsInfo updated above.
view()->buffer()->changed();
+ }
lyx_view_->updateStatusBar();
}
}
- string const shortcuts = theTopLevelKeymap().printbindings(cmd);
+ string const shortcuts = to_utf8(theTopLevelKeymap().printbindings(cmd));
if (!shortcuts.empty())
comname += ": " + shortcuts;
if (filename.empty()) {
filename = addName(lyxrc.document_path,
"newfile" + convert<string>(++newfile_number) + ".lyx");
- while (theBufferList().exists(filename) || fs::is_readable(filename)) {
+ while (theBufferList().exists(filename) ||
+ fs::is_readable(FileName(filename).toFilesystemEncoding())) {
++newfile_number;
filename = addName(lyxrc.document_path,
"newfile" + convert<string>(newfile_number) +
{
// When meta-fake key is pressed, show the key sequence so far + "M-".
if (wasMetaKey())
- return keyseq->print() + "M-";
+ return to_utf8(keyseq->print() + "M-");
// Else, when a non-complete key sequence is pressed,
// show the available options.
if (keyseq->length() > 0 && !keyseq->deleted())
- return keyseq->printOptions();
+ return to_utf8(keyseq->printOptions());
if (!view()->buffer())
return to_utf8(_("Welcome to LyX!"));
case LyXRC::RC_DISPLAY_GRAPHICS:
case LyXRC::RC_DOCUMENTPATH:
if (lyxrc_orig.document_path != lyxrc_new.document_path) {
- if (fs::exists(lyxrc_new.document_path) &&
- fs::is_directory(lyxrc_new.document_path)) {
+ string const encoded = FileName(
+ lyxrc_new.document_path).toFilesystemEncoding();
+ if (fs::exists(encoded) && fs::is_directory(encoded))
support::package().document_dir() = lyxrc.document_path;
- }
}
case LyXRC::RC_ESC_CHARS:
case LyXRC::RC_FONT_ENCODING: