mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-12-22 13:18:28 +00:00
Fix shortcuts info output on the Mac
QKeySequence returns special characters for keys on the mac rather than textual key names (as on other OSes). Since these symbols are not included in many fonts, we re-translate them to textual names Fixes: #10641
This commit is contained in:
parent
fd7490762d
commit
5f45b3ed9c
@ -747,10 +747,79 @@ void InsetInfo::updateBuffer(ParIterator const & it, UpdateType utype) {
|
||||
info(from_ascii("undefined"), params_.lang);
|
||||
break;
|
||||
}
|
||||
docstring sequence;
|
||||
if (params_.type == InsetInfoParams::SHORTCUT_INFO)
|
||||
setText(bindings.begin()->print(KeySequence::ForGui), guilang);
|
||||
sequence = bindings.begin()->print(KeySequence::ForGui);
|
||||
else
|
||||
setText(theTopLevelKeymap().printBindings(func, KeySequence::ForGui), guilang);
|
||||
sequence = theTopLevelKeymap().printBindings(func, KeySequence::ForGui);
|
||||
// QKeySequence returns special characters for keys on the mac
|
||||
// Since these are not included in many fonts, we
|
||||
// re-translate them to textual names (see #10641)
|
||||
odocstringstream ods;
|
||||
for (size_t n = 0; n < sequence.size(); ++n) {
|
||||
char_type const c = sequence[n];
|
||||
switch(c) {
|
||||
case 0x21b5://Return
|
||||
gui = _("Return[[Key]]");
|
||||
ods << translateIfPossible(from_ascii("Return[[Key]]"), params_.lang->code());
|
||||
break;
|
||||
case 0x21b9://Tab both directions (Win)
|
||||
gui = _("Tab[[Key]]");
|
||||
ods << translateIfPossible(from_ascii("Tab[[Key]]"), params_.lang->code());
|
||||
break;
|
||||
case 0x21de://Qt::Key_PageUp
|
||||
gui = _("PgUp");
|
||||
ods << translateIfPossible(from_ascii("PgUp"), params_.lang->code());
|
||||
break;
|
||||
case 0x21df://Qt::Key_PageDown
|
||||
gui = _("PgDown");
|
||||
ods << translateIfPossible(from_ascii("PgDown"), params_.lang->code());
|
||||
break;
|
||||
case 0x21e4://Qt::Key_Backtab
|
||||
gui = _("Backtab");
|
||||
ods << translateIfPossible(from_ascii("Backtab"), params_.lang->code());
|
||||
break;
|
||||
case 0x21e5://Qt::Key_Tab
|
||||
gui = _("Tab");
|
||||
ods << translateIfPossible(from_ascii("Tab"), params_.lang->code());
|
||||
break;
|
||||
case 0x21e7://Shift
|
||||
gui = _("Shift");
|
||||
ods << translateIfPossible(from_ascii("Shift"), params_.lang->code());
|
||||
break;
|
||||
case 0x21ea://Qt::Key_CapsLock
|
||||
gui = _("CapsLock");
|
||||
ods << translateIfPossible(from_ascii("CapsLock"), params_.lang->code());
|
||||
break;
|
||||
case 0x2318://CMD
|
||||
gui = _("Command[[Key]]");
|
||||
ods << translateIfPossible(from_ascii("Command[[Key]]"), params_.lang->code());
|
||||
break;
|
||||
case 0x2324://Qt::Key_Enter
|
||||
gui = _("Return[[Key]]");
|
||||
ods << translateIfPossible(from_ascii("Return[[Key]]"), params_.lang->code());
|
||||
break;
|
||||
case 0x2325://Option key
|
||||
gui = _("Option[[Key]]");
|
||||
ods << translateIfPossible(from_ascii("Option[[Key]]"), params_.lang->code());
|
||||
break;
|
||||
case 0x2326://Qt::Key_Delete
|
||||
gui = _("Delete[[Key]]");
|
||||
ods << translateIfPossible(from_ascii("Delete[[Key]]"), params_.lang->code());
|
||||
break;
|
||||
case 0x232b://Qt::Key_Backspace
|
||||
gui = _("Fn+Del");
|
||||
ods << translateIfPossible(from_ascii("Fn+Delete"), params_.lang->code());
|
||||
break;
|
||||
case 0x238b://Qt::Key_Escape
|
||||
gui = _("Esc");
|
||||
ods << translateIfPossible(from_ascii("Esc"), params_.lang->code());
|
||||
break;
|
||||
default:
|
||||
ods.put(c);
|
||||
}
|
||||
}
|
||||
setText(ods.str(), guilang);
|
||||
params_.force_ltr = !guilang->rightToLeft() && !params_.lang->rightToLeft();
|
||||
break;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user