X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FKeyMap.cpp;h=7628d0dfdbb37b9fa25d99bc6385627d4bd8cc56;hb=f110ef2f41d0aca14acd4a5f1aec6011f770c3c6;hp=70848610974019144af464a55f1481d8a74e385e;hpb=fb377c31df1d60e941fafe7dfee21f8aa3886af5;p=lyx.git diff --git a/src/KeyMap.cpp b/src/KeyMap.cpp index 7084861097..7628d0dfdb 100644 --- a/src/KeyMap.cpp +++ b/src/KeyMap.cpp @@ -25,6 +25,7 @@ #include "support/filetools.h" #include "support/gettext.h" #include "support/lstrings.h" +#include "support/TempFile.h" #include "frontends/alert.h" @@ -37,11 +38,6 @@ using namespace lyx::support; namespace lyx { -namespace { - // current format of bind files - static unsigned int const BIND_FORMAT = 1; -} - string const KeyMap::printKeySym(KeySymbol const & key, KeyModifier mod) { string buf; @@ -50,8 +46,15 @@ string const KeyMap::printKeySym(KeySymbol const & key, KeyModifier mod) if (mod & ControlModifier) buf += "C-"; +#if defined(USE_MACOSX_PACKAGING) || defined(USE_META_KEYBINDING) + if (mod & MetaModifier) + buf += "M-"; + if (mod & AltModifier) + buf += "A-"; +#else if (mod & AltModifier) buf += "M-"; +#endif if (mod & ShiftModifier) buf += "S-"; @@ -113,13 +116,12 @@ void KeyMap::bind(KeySequence * seq, FuncRequest const & func, unsigned int r) LYXERR(Debug::KBMAP, "Warning: New binding for '" << to_utf8(seq->print(KeySequence::Portable)) << "' is overriding old binding..."); - if (it->prefixes.get()) { + if (it->prefixes) it->prefixes.reset(); - } it->func = func; it->func.setOrigin(FuncRequest::KEYBOARD); return; - } else if (!it->prefixes.get()) { + } else if (!it->prefixes) { lyxerr << "Error: New binding for '" << to_utf8(seq->print(KeySequence::Portable)) << "' is overriding old binding..." @@ -166,10 +168,10 @@ void KeyMap::unbind(KeySequence * seq, FuncRequest const & func, unsigned int r) if (r + 1 == seq->length()) { if (it->func == func) { remove = it; - if (it->prefixes.get()) + if (it->prefixes) it->prefixes.reset(); } - } else if (it->prefixes.get()) { + } else if (it->prefixes) { it->prefixes->unbind(seq, func, r + 1); if (it->prefixes->empty()) remove = it; @@ -199,7 +201,7 @@ FuncRequest KeyMap::getBinding(KeySequence const & seq, unsigned int r) && mod2 == it->mod.second) { if (r + 1 == seq.length()) return it->func; - else if (it->prefixes.get()) + else if (it->prefixes) return it->prefixes->getBinding(seq, r + 1); } } @@ -252,16 +254,16 @@ bool KeyMap::read(FileName const & bind_file, KeyMap * unbind_map) if (retval != FormatMismatch) return retval == ReadOK; - LYXERR(Debug::FILES, "Converting bind file to " << BIND_FORMAT); - FileName const tempfile = FileName::tempName("convert_bind"); + LYXERR(Debug::FILES, "Converting bind file to " << LFUN_FORMAT); + TempFile tmp("convert_bind"); + FileName const tempfile = tmp.name(); bool const success = prefs2prefs(bind_file, tempfile, true); if (!success) { LYXERR0 ("Unable to convert " << bind_file << - " to format " << BIND_FORMAT); + " to format " << LFUN_FORMAT); return false; } retval = readWithoutConv(tempfile, unbind_map); - tempfile.removeFile(); return retval == ReadOK; } @@ -382,7 +384,7 @@ KeyMap::ReturnValues KeyMap::readWithoutConv(FileName const & bind_file, KeyMap // This is triggered the first time through the loop unless // we hit a format tag. - if (format != BIND_FORMAT) + if (format != LFUN_FORMAT) return FormatMismatch; } @@ -402,7 +404,7 @@ void KeyMap::write(string const & bind_file, bool append, bool unbind) const if (!append) os << "## This file is automatically generated by lyx\n" << "## All modifications will be lost\n\n" - << "Format " << BIND_FORMAT << "\n\n"; + << "Format " << LFUN_FORMAT << "\n\n"; string tag = unbind ? "\\unbind" : "\\bind"; BindingList const list = listBindings(false); @@ -439,10 +441,10 @@ FuncRequest const & KeyMap::lookup(KeySymbol const &key, if (cit->code == key && cit->mod.first == check) { // match found - if (cit->prefixes.get()) { + if (cit->prefixes) { // this is a prefix key - set new map seq->curmap = cit->prefixes.get(); - static FuncRequest prefix(LFUN_COMMAND_PREFIX); + static const FuncRequest prefix(LFUN_COMMAND_PREFIX); return prefix; } else { // final key - reset map @@ -505,7 +507,7 @@ KeyMap::Bindings KeyMap::findBindings(FuncRequest const & func, Table::const_iterator end = table.end(); for (Table::const_iterator cit = table.begin(); cit != end; ++cit) { - if (cit->prefixes.get()) { + if (cit->prefixes) { KeySequence seq = prefix; seq.addkey(cit->code, cit->mod.first); Bindings res2 = cit->prefixes->findBindings(func, seq); @@ -553,7 +555,7 @@ void KeyMap::listBindings(BindingList & list, Table::const_iterator it_end = table.end(); for (; it != it_end; ++it) { // a LFUN_COMMAND_PREFIX - if (it->prefixes.get()) { + if (it->prefixes) { KeySequence seq = prefix; seq.addkey(it->code, it->mod.first); it->prefixes->listBindings(list, seq, tag);