X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fkbmap.C;h=8b528c49f1d046bae6fb066cd8b101b692dcbc66;hb=cb52251ccff29d6cbfa13ab90a96be566e3f41ac;hp=51d9ecbfdc65117a0265c7de54cb30b7a3e6e8dc;hpb=916ae4222d5218ad7d5c2d5b989ed95437eb3491;p=lyx.git diff --git a/src/kbmap.C b/src/kbmap.C index 51d9ecbfdc..8b528c49f1 100644 --- a/src/kbmap.C +++ b/src/kbmap.C @@ -4,13 +4,13 @@ * LyX, The Document Processor * * Copyright 1995 Matthias Ettrich - * Copyright 1995-2000 The LyX Team. + * Copyright 1995-2001 The LyX Team. * * ====================================================== */ #include -#include +//#include #include #ifdef __GNUG__ @@ -71,7 +71,7 @@ void kb_keymap::printKey(kb_key const & key, string & buf) // This binds a key to an action -int kb_keymap::bind(string const & seq, int action) +string::size_type kb_keymap::bind(string const & seq, int action) { if (lyxerr.debugging(Debug::KBMAP)) { lyxerr << "BIND: Sequence `" @@ -81,8 +81,8 @@ int kb_keymap::bind(string const & seq, int action) kb_sequence k; - int const res = k.parse(seq); - if (!res) { + string::size_type const res = k.parse(seq); + if (res == string::npos) { defkey(&k, action); } else lyxerr[Debug::KBMAP] << "Parse error at position " << res @@ -117,19 +117,19 @@ int kb_keymap::lookup(unsigned int key, for (Table::const_iterator cit = table.begin(); cit != table.end(); ++cit) { - unsigned int const msk1 = (*cit).mod & 0xffff; - unsigned int const msk0 = ((*cit).mod >> 16) & 0xffff; - if ((*cit).code == key && (mod & ~msk0) == msk1) { + unsigned int const msk1 = cit->mod & 0xffff; + unsigned int const msk0 = (cit->mod >> 16) & 0xffff; + if (cit->code == key && (mod & ~msk0) == msk1) { // math found: - if ((*cit).table.get()) { + if (cit->table.get()) { // this is a prefix key - set new map - seq->curmap = (*cit).table.get(); + seq->curmap = cit->table.get(); return 0; } else { // final key - reset map seq->curmap = seq->stdmap; seq->delseq(); - return (*cit).action; + return cit->action; } } } @@ -181,7 +181,7 @@ int kb_keymap::defkey(kb_sequence * seq, int action, int idx /*= 0*/) if (table.size() != 0) { // without this I get strange crashes Table::iterator end = table.end(); for (Table::iterator it = table.begin(); it != end; ++it) { - if (code == (*it).code && modmsk == (*it).mod) { + if (code == it->code && modmsk == it->mod) { // overwrite binding if (idx + 1 == seq->length) { string buf; @@ -191,12 +191,12 @@ int kb_keymap::defkey(kb_sequence * seq, int action, int idx /*= 0*/) << buf << "' is overriding old binding..." << endl; - if ((*it).table.get()) { - (*it).table.reset(0); + if (it->table.get()) { + it->table.reset(0); } - (*it).action = action; + it->action = action; return 0; - } else if (!(*it).table.get()) { + } else if (!it->table.get()) { string buf; seq->print(buf, true); lyxerr << "Error: New binding for '" << buf @@ -204,23 +204,23 @@ int kb_keymap::defkey(kb_sequence * seq, int action, int idx /*= 0*/) << endl; return -1; } else { - return (*it).table->defkey(seq, action, - idx + 1); + return it->table->defkey(seq, action, + idx + 1); } } } } Table::iterator newone = table.insert(table.end(), kb_key()); - (*newone).code = code; - (*newone).mod = modmsk; + newone->code = code; + newone->mod = modmsk; if (idx + 1 == seq->length) { - (*newone).action = action; - (*newone).table.reset(0); + newone->action = action; + newone->table.reset(0); return 0; } else { - (*newone).table.reset(new kb_keymap); - return (*newone).table->defkey(seq, action, idx + 1); + newone->table.reset(new kb_keymap); + return newone->table->defkey(seq, action, idx + 1); } } @@ -234,7 +234,7 @@ string const kb_keymap::keyname(kb_key const & k) // Finds a key for a keyaction, if possible -string const kb_keymap::findbinding(int act) const +string const kb_keymap::findbinding(int act, string const & prefix) const { string res; if (table.empty()) return res; @@ -242,18 +242,14 @@ string const kb_keymap::findbinding(int act) const Table::const_iterator end = table.end(); for (Table::const_iterator cit = table.begin(); cit != end; ++cit) { - if ((*cit).table.get()) { - string suffix = (*cit).table->findbinding(act); - suffix = strip(suffix, ' '); - suffix = strip(suffix, ']'); - suffix = frontStrip(suffix, '['); - if (!suffix.empty()) { - res += "[" + keyname((*cit)) + " " - + suffix + "] "; - } - } else if ((*cit).action == act) { + if (cit->table.get()) { + res += cit->table->findbinding(act, + prefix + + keyname((*cit)) + + " "); + } else if (cit->action == act) { res += "["; - res += keyname((*cit)); + res += prefix + keyname((*cit)); res += "] "; } }