]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/GuiKeySymbol.cpp
On Linux show in crash message box the backtrace
[lyx.git] / src / frontends / qt4 / GuiKeySymbol.cpp
index e5d3d796d96133e6329c32a3d39208da9837177b..27b593bb705ff75f6a4afb9992e5b0deb2934b76 100644 (file)
@@ -341,6 +341,7 @@ static int string_to_qkey(std::string const & str)
        if (str == "yacute") return Qt::Key_Yacute;
        if (str == "thorn") return Qt::Key_THORN;
        if (str == "ydiaeresis") return Qt::Key_ydiaeresis;
+       if (str == "Dead_Caron") return Qt::Key_Dead_Caron;
 
        // FIXME, correct for all these ?
        if (str == "Super_L") return Qt::Key_Super_L;
@@ -558,6 +559,8 @@ static std::string const qkey_to_string(int lkey)
        case Qt::Key_THORN: return "THORN";
        case Qt::Key_ssharp: return "ssharp";
        case Qt::Key_ydiaeresis: return "ydiaeresis";
+       case Qt::Key_Bar: return "bar";
+       case Qt::Key_Dead_Caron: return "Dead_Caron";
 
        // FIXME: these ones I don't know the names of ... help !
        // what's here is basically guesses ...
@@ -567,7 +570,6 @@ static std::string const qkey_to_string(int lkey)
        case Qt::Key_Hyper_L: return "Hyper_L";
        case Qt::Key_Hyper_R: return "Hyper_R";
        case Qt::Key_Help: return "Help";
-       case Qt::Key_Bar: return "Bar";
        case Qt::Key_Backtab: return "BackTab";
 
        default:
@@ -670,7 +672,7 @@ char_type KeySymbol::getUCSEncoded() const
                return 0;
 
        // UTF16 has a maximum of two characters.
-       LASSERT(text_.size() <= 2, /**/);
+       LASSERT(text_.size() <= 2, return 0);
 
        if (lyxerr.debugging() && text_.size() > 1) {
                // We don't know yet how well support the full ucs4 range.
@@ -687,16 +689,18 @@ docstring const KeySymbol::print(KeyModifier mod, bool forgui) const
 {
        int tmpkey = key_;
 
-       if (mod & ShiftModifier)
+       if (mod & ShiftModifier && !(tmpkey == Qt::Key_Shift))
                tmpkey += Qt::ShiftModifier;
-       if (mod & ControlModifier)
+       if (mod & ControlModifier && !(tmpkey == Qt::Key_Control))
                tmpkey += Qt::ControlModifier;
-       if (mod & AltModifier)
+       if (mod & AltModifier && !(tmpkey == Qt::Key_Alt))
                tmpkey += Qt::AltModifier;
+       if (mod & MetaModifier && !(tmpkey == Qt::Key_Meta))
+               tmpkey += Qt::MetaModifier;
 
        QKeySequence seq(tmpkey);
        QString str;
-       
+
        if (forgui)
                str = seq.toString(QKeySequence::NativeText);
        else {
@@ -744,8 +748,15 @@ KeyModifier q_key_state(Qt::KeyboardModifiers state)
                k |= ControlModifier;
        if (state & Qt::ShiftModifier)
                k |= ShiftModifier;
-       if (state & Qt::AltModifier || state & Qt::MetaModifier)
+       if (state & Qt::AltModifier)
+               k |= AltModifier;
+#if defined(USE_MACOSX_PACKAGING) || defined(USE_META_KEYBINDING)
+       if (state & Qt::MetaModifier)
+               k |= MetaModifier;
+#else
+       if (state & Qt::MetaModifier)
                k |= AltModifier;
+#endif
        return k;
 }