mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-12-27 06:19:36 +00:00
Make the shortcuts work correctly with the mac.
* src/frontends/LyXKeySym.h: * src/frontends/qt4/QLyXKeySym.h: * src/frontends/qt4/QLyXKeySym.C (print): add a forgui boolean that tells whether the string should used localized names and special characters. * src/MenuBackend.C (binding): * src/kbmap.C (print): * src/kbsequence.C (print, printOptions): add forgui parameter. * src/frontends/qt4/QLPopupMenu.C (addBinding): use a non-localaized binding for Qt/Mac (because it needs to be parsed back) and a localized one for the others (so that it looks good). * src/kbmap.C (defkey,printbindings): * src/lyxfunc.C (processKeySym,dispatch,viewStatusMessage): adapt to above changes. * src/kbmap.C (printKey): remove. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@16510 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
f73fb4a2f4
commit
4c1fb15143
@ -134,7 +134,7 @@ docstring const MenuItem::shortcut() const
|
||||
}
|
||||
|
||||
|
||||
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() const
|
||||
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 "
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -136,7 +136,11 @@ docstring const QLPopupMenu::getLabel(MenuItem const & mi)
|
||||
|
||||
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;
|
||||
}
|
||||
|
@ -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_modifier::state mod) const
|
||||
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));
|
||||
}
|
||||
|
||||
|
||||
|
@ -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 {
|
||||
|
16
src/kbmap.C
16
src/kbmap.C
@ -55,12 +55,6 @@ string const kb_keymap::printKeySym(LyXKeySym const & key,
|
||||
}
|
||||
|
||||
|
||||
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(FuncRequest const & func) const
|
||||
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();
|
||||
}
|
||||
|
||||
|
11
src/kbmap.h
11
src/kbmap.h
@ -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
|
||||
|
@ -130,17 +130,14 @@ string::size_type kb_sequence::parse(string const & s)
|
||||
}
|
||||
|
||||
|
||||
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() const
|
||||
}
|
||||
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -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();
|
||||
|
@ -294,7 +294,7 @@ void LyXFunc::processKeySym(LyXKeySymPtr keysym, key_modifier::state state)
|
||||
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 keysym, key_modifier::state state)
|
||||
// num_bytes == 0? (Lgb)
|
||||
|
||||
if (keyseq->length() > 1) {
|
||||
lyx_view_->message(keyseq->print());
|
||||
lyx_view_->message(keyseq->print(true));
|
||||
}
|
||||
|
||||
|
||||
@ -788,7 +788,7 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
|
||||
|
||||
case LFUN_COMMAND_PREFIX:
|
||||
BOOST_ASSERT(lyx_view_);
|
||||
lyx_view_->message(keyseq->printOptions());
|
||||
lyx_view_->message(keyseq->printOptions(true));
|
||||
break;
|
||||
|
||||
case LFUN_COMMAND_EXECUTE:
|
||||
@ -809,7 +809,7 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
|
||||
|
||||
case LFUN_META_PREFIX:
|
||||
meta_fake_bit = key_modifier::alt;
|
||||
setMessage(keyseq->print());
|
||||
setMessage(keyseq->print(true));
|
||||
break;
|
||||
|
||||
case LFUN_BUFFER_TOGGLE_READ_ONLY:
|
||||
@ -1169,7 +1169,7 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
|
||||
break;
|
||||
|
||||
case LFUN_SERVER_NOTIFY:
|
||||
dispatch_buffer = keyseq->print();
|
||||
dispatch_buffer = keyseq->print(false);
|
||||
theLyXServer().notifyClient(to_utf8(dispatch_buffer));
|
||||
break;
|
||||
|
||||
@ -2035,12 +2035,12 @@ docstring const LyXFunc::viewStatusMessage()
|
||||
{
|
||||
// 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!");
|
||||
|
Loading…
Reference in New Issue
Block a user