X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fqt4%2FGuiKeySymbol.cpp;h=e5d3d796d96133e6329c32a3d39208da9837177b;hb=425d092204118ea6c24c28e85fdf03fcf2bb51a4;hp=9a26c125376b2e0072d3d0aac9e31c78a088161b;hpb=7f461f4392a19cf488dec005d2f12cfea83655d9;p=lyx.git diff --git a/src/frontends/qt4/GuiKeySymbol.cpp b/src/frontends/qt4/GuiKeySymbol.cpp index 9a26c12537..e5d3d796d9 100644 --- a/src/frontends/qt4/GuiKeySymbol.cpp +++ b/src/frontends/qt4/GuiKeySymbol.cpp @@ -3,7 +3,7 @@ * This file is part of LyX, the document processor. * Licence details can be found in the file COPYING. * - * \author Asger & Jürgen + * \author Asger & Jürgen * * Full author contact details are available in file CREDITS. */ @@ -14,7 +14,7 @@ #include "qt_helpers.h" -#include "support/assert.h" +#include "support/lassert.h" #include "support/debug.h" #include "Encoding.h" @@ -402,7 +402,9 @@ static std::string const qkey_to_string(int lkey) case Qt::Key_Y: return "y"; case Qt::Key_Z: return "z"; + case Qt::Key_Return: return "Return"; case Qt::Key_Escape: return "Escape"; + case Qt::Key_Tab: return "Tab"; case Qt::Key_Backspace: return "BackSpace"; case Qt::Key_Insert: return "Insert"; case Qt::Key_Delete: return "Delete"; @@ -595,7 +597,7 @@ static char encode(string const & encoding, QString const & str) return 0; } - LYXERR(Debug::KEY, "Using codec " << fromqstr(codec->name())); + LYXERR(Debug::KEY, "Using codec " << codec->name()); if (!codec->canEncode(str)) { LYXERR(Debug::KEY, "Oof. Can't encode the text !"); @@ -616,7 +618,7 @@ void setKeySymbol(KeySymbol * sym, QKeyEvent * ev) return; } LYXERR(Debug::KEY, "Getting key " << ev->key() << ", with text '" - << fromqstr(ev->text()) << "'"); + << ev->text() << "'"); // This is unsafe because ev->text() is the unicode representation of the // key, not the name of the key. For example, Ctrl-x and Alt-x produce // different texts. @@ -636,7 +638,7 @@ void KeySymbol::init(string const & symbolname) bool KeySymbol::isOK() const { - bool const ok = !(text_.empty() && key_ == Qt::Key_unknown); + bool const ok = !(text_.empty() && qkey_to_string(key_).empty()); LYXERR(Debug::KEY, "isOK is " << ok); return ok; } @@ -693,9 +695,25 @@ docstring const KeySymbol::print(KeyModifier mod, bool forgui) const tmpkey += Qt::AltModifier; QKeySequence seq(tmpkey); + QString str; + + if (forgui) + str = seq.toString(QKeySequence::NativeText); + else { +#ifdef Q_WS_MACX + // Qt/Mac does not use Command and friends in the + // portable case, but the windows-like Control+x (bug 5421). + str = seq.toString(QKeySequence::NativeText); + str.replace(QChar(0x21E7), qt_("Shift-")); + str.replace(QChar(0x2303), qt_("Control-")); + str.replace(QChar(0x2325), qt_("Option-")); + str.replace(QChar(0x2318), qt_("Command-")); +#else + str = seq.toString(QKeySequence::PortableText); +#endif + } - return qstring_to_ucs4(seq.toString(forgui ? QKeySequence::NativeText - : QKeySequence::PortableText)); + return qstring_to_ucs4(str); }