>>>>> "Bennett" == Bennett Helm <[EMAIL PROTECTED]> writes:
Bennett> No: after the appropriate menu has been opened, using the Bennett> keyboard shortcut results in the shortcut being shown in the Bennett> status bar. (Before it has been opened, nothing shows when Bennett> using the keyboard shortcut.) But I do see the shortcut in Bennett> the status bar whenever the function is invoked via the menu Bennett> or the toolbar. OK, I see why this happens. Try this one instead (note that part of the previous patch has already been applied). JMarc
Index: src/lyxfunc.C =================================================================== --- src/lyxfunc.C (revision 16489) +++ src/lyxfunc.C (working copy) @@ -294,7 +294,7 @@ void LyXFunc::processKeySym(LyXKeySymPtr lyxerr << BOOST_CURRENT_FUNCTION << " Key [action=" << func.action << "][" - << to_utf8(keyseq->print()) << ']' + << to_utf8(keyseq->print(false)) << ']' << endl; } @@ -303,7 +303,7 @@ void LyXFunc::processKeySym(LyXKeySymPtr // num_bytes == 0? (Lgb) if (keyseq->length() > 1) { - lyx_view_->message(keyseq->print()); + lyx_view_->message(keyseq->print(true)); } @@ -787,7 +787,7 @@ void LyXFunc::dispatch(FuncRequest const case LFUN_COMMAND_PREFIX: BOOST_ASSERT(lyx_view_); - lyx_view_->message(keyseq->printOptions()); + lyx_view_->message(keyseq->printOptions(true)); break; case LFUN_COMMAND_EXECUTE: @@ -808,7 +808,7 @@ void LyXFunc::dispatch(FuncRequest const case LFUN_META_PREFIX: meta_fake_bit = key_modifier::alt; - setMessage(keyseq->print()); + setMessage(keyseq->print(true)); break; case LFUN_BUFFER_TOGGLE_READ_ONLY: @@ -1168,7 +1168,7 @@ void LyXFunc::dispatch(FuncRequest const break; case LFUN_SERVER_NOTIFY: - dispatch_buffer = keyseq->print(); + dispatch_buffer = keyseq->print(false); theLyXServer().notifyClient(to_utf8(dispatch_buffer)); break; @@ -2034,12 +2034,12 @@ docstring const LyXFunc::viewStatusMessa { // When meta-fake key is pressed, show the key sequence so far + "M-". if (wasMetaKey()) - return keyseq->print() + "M-"; + return keyseq->print(true) + "M-"; // Else, when a non-complete key sequence is pressed, // show the available options. if (keyseq->length() > 0 && !keyseq->deleted()) - return keyseq->printOptions(); + return keyseq->printOptions(true); if (!view()->buffer()) return _("Welcome to LyX!"); Index: src/frontends/LyXKeySym.h =================================================================== --- src/frontends/LyXKeySym.h (revision 16489) +++ src/frontends/LyXKeySym.h (working copy) @@ -58,9 +58,9 @@ public: /** * Return a string describing the KeySym with modifier mod. - * This should use the native UI format when applicable + * Use the native UI format when \c forgui is true. */ - virtual docstring const print(key_modifier::state mod) const = 0; + virtual docstring const print(key_modifier::state mod, bool forgui) const = 0; }; Index: src/frontends/qt4/QLyXKeySym.C =================================================================== --- src/frontends/qt4/QLyXKeySym.C (revision 16489) +++ src/frontends/qt4/QLyXKeySym.C (working copy) @@ -211,7 +211,7 @@ size_t QLyXKeySym::getUCSEncoded() const } -docstring const QLyXKeySym::print(key_modifier::state mod) const +docstring const QLyXKeySym::print(key_modifier::state mod, bool forgui) const { int tmpkey = key_; @@ -221,8 +221,11 @@ docstring const QLyXKeySym::print(key_mo tmpkey += Qt::CTRL; if (mod & key_modifier::alt) tmpkey += Qt::ALT; + + QKeySequence seq(tmpkey); - return qstring_to_ucs4(QKeySequence(tmpkey).toString()); + return qstring_to_ucs4(seq.toString(forgui ? QKeySequence::NativeText + : QKeySequence::PortableText)); } Index: src/frontends/qt4/QLyXKeySym.h =================================================================== --- src/frontends/qt4/QLyXKeySym.h (revision 16489) +++ src/frontends/qt4/QLyXKeySym.h (working copy) @@ -58,8 +58,12 @@ public: */ virtual size_t getUCSEncoded() const; - /// Return a human-readable version of a key+modifier pair. - virtual docstring const print(key_modifier::state mod) const; + /** + * Return a human-readable version of a key+modifier pair. + * This will be the GUI version (translated and with special + * characters for Mac OS X) when \c forgui is true. + */ + virtual docstring const print(key_modifier::state mod, bool forgui) const; /// int key() const { Index: src/frontends/qt4/QLPopupMenu.C =================================================================== --- src/frontends/qt4/QLPopupMenu.C (revision 16489) +++ src/frontends/qt4/QLPopupMenu.C (working copy) @@ -136,7 +136,11 @@ docstring const QLPopupMenu::getLabel(Me void QLPopupMenu::addBinding(docstring & label, MenuItem const & mi) { - docstring const binding(mi.binding()); +#ifdef Q_WS_MACX + docstring const binding(mi.binding(false)); +#else + docstring const binding(mi.binding(true)); +#endif if (!binding.empty()) { label += '\t' + binding; } Index: src/kbsequence.C =================================================================== --- src/kbsequence.C (revision 16489) +++ src/kbsequence.C (working copy) @@ -130,17 +130,14 @@ string::size_type kb_sequence::parse(str } -docstring const kb_sequence::print() const +docstring const kb_sequence::print(bool forgui) const { docstring buf; - //if (deleted_) - // return buf; + const KeySequence::size_type length = sequence.size(); - KeySequence::size_type i, length = sequence.size(); - - for (i = 0; i < length; ++i) { - buf += sequence[i]->print(modifiers[i].first); + for (KeySequence::size_type i = 0; i < length; ++i) { + buf += sequence[i]->print(modifiers[i].first, forgui); // append a blank if (i + 1 < length) { @@ -151,17 +148,17 @@ docstring const kb_sequence::print() con } -docstring const kb_sequence::printOptions() const +docstring const kb_sequence::printOptions(bool forgui) const { docstring buf; - buf += print(); + buf += print(forgui); if (!curmap) return buf; buf += _(" options: "); - buf += curmap->print(); + buf += curmap->print(forgui); return buf; } Index: src/kbsequence.h =================================================================== --- src/kbsequence.h (revision 16489) +++ src/kbsequence.h (working copy) @@ -63,15 +63,19 @@ public: /** * Return the current sequence as a string. + * @param forgui true if the string should use translations and + * special characters. * @see parse() */ - docstring const print() const; + docstring const print(bool forgui) const; /** * Return the current sequence and available options as * a string. No options are added if no curmap kb map exists. + * @param forgui true if the string should use translations and + * special characters. */ - docstring const printOptions() const; + docstring const printOptions(bool forgui) const; /// Mark the sequence as deleted. void mark_deleted(); Index: src/kbmap.C =================================================================== --- src/kbmap.C (revision 16489) +++ src/kbmap.C (working copy) @@ -55,12 +55,6 @@ string const kb_keymap::printKeySym(LyXK } -docstring const kb_keymap::printKey(kb_key const & key) const -{ - return key.code->print(key.mod.first); -} - - string::size_type kb_keymap::bind(string const & seq, FuncRequest const & func) { if (lyxerr.debugging(Debug::KBMAP)) { @@ -220,12 +214,12 @@ kb_keymap::lookup(LyXKeySymPtr key, } -docstring const kb_keymap::print() const +docstring const kb_keymap::print(bool forgui) const { docstring buf; Table::const_iterator end = table.end(); for (Table::const_iterator cit = table.begin(); cit != end; ++cit) { - buf += printKey((*cit)); + buf += cit->code->print(cit->mod.first, forgui); buf += ' '; } return buf; @@ -252,7 +246,7 @@ void kb_keymap::defkey(kb_sequence * seq if (r + 1 == seq->length()) { lyxerr[Debug::KBMAP] << "Warning: New binding for '" - << to_utf8(seq->print()) + << to_utf8(seq->print(false)) << "' is overriding old binding..." << endl; if (it->table.get()) { @@ -263,7 +257,7 @@ void kb_keymap::defkey(kb_sequence * seq return; } else if (!it->table.get()) { lyxerr << "Error: New binding for '" - << to_utf8(seq->print()) + << to_utf8(seq->print(false)) << "' is overriding old binding..." << endl; return; @@ -294,7 +288,7 @@ docstring const kb_keymap::printbindings Bindings bindings = findbindings(func); for (Bindings::const_iterator cit = bindings.begin(); cit != bindings.end() ; ++cit) - res << '[' << cit->print() << ']'; + res << '[' << cit->print(true) << ']'; return res.str(); } Index: src/MenuBackend.C =================================================================== --- src/MenuBackend.C (revision 16489) +++ src/MenuBackend.C (working copy) @@ -134,7 +134,7 @@ docstring const MenuItem::shortcut() con } -docstring const MenuItem::binding() const +docstring const MenuItem::binding(bool forgui) const { if (kind_ != Command) return docstring(); @@ -144,7 +144,7 @@ docstring const MenuItem::binding() cons kb_keymap::Bindings bindings = theTopLevelKeymap().findbindings(func_); if (bindings.size()) { - return bindings.begin()->print(); + return bindings.begin()->print(forgui); } else { lyxerr[Debug::KBMAP] << "No binding for " Index: src/kbmap.h =================================================================== --- src/kbmap.h (revision 16489) +++ src/kbmap.h (working copy) @@ -45,8 +45,12 @@ public: // Parse a bind file bool read(std::string const & bind_file); - /// print all available keysyms - docstring const print() const; + /** + * print all available keysyms + * @param forgui true if the string should use translations and + * special characters. + */ + docstring const print(bool forgui) const; /** * Look up a key press in the keymap. @@ -110,9 +114,6 @@ private: void defkey(kb_sequence * seq, FuncRequest const & func, unsigned int r = 0); - /// Returns a string of the given key - docstring const printKey(kb_key const & key) const; - /** * Given an action, find all keybindings * @param func the action Index: src/MenuBackend.h =================================================================== --- src/MenuBackend.h (revision 16489) +++ src/MenuBackend.h (working copy) @@ -110,8 +110,11 @@ public: FuncStatus & status() { return status_; } /// returns the status of the lfun associated with this entry void status(FuncStatus const & status) { status_ = status; } - /// returns the binding associated to this action - docstring const binding() const; + /** + * returns the binding associated to this action. + * Use the native UI format when \c forgui is true. + */ + docstring const binding(bool forgui) const; /// the description of the submenu (if relevant) docstring const & submenuname() const { return submenuname_; } /// set the description of the submenu