]> git.lyx.org Git - lyx.git/blobdiff - src/kbmap.C
fix bug 2089: Touching Navigate menu crashes Lyx when a TOC inset is in a section...
[lyx.git] / src / kbmap.C
index 55f7b025238b0d530957525ccaf6bb48e754d660..32fbdfd1c457bffae6aa06317deeb459b98f8f69 100644 (file)
@@ -23,7 +23,8 @@
 #include "frontends/LyXKeySym.h"
 
 #include "support/filetools.h"
-#include "support/std_sstream.h"
+
+#include <sstream>
 
 using lyx::support::i18nLibFileSearch;
 
@@ -254,6 +255,7 @@ void kb_keymap::defkey(kb_sequence * seq,
                                        it->table.reset();
                                }
                                it->func = func;
+                               it->func.origin = FuncRequest::KEYBOARD;
                                return;
                        } else if (!it->table.get()) {
                                lyxerr << "Error: New binding for '" << seq->print()
@@ -293,14 +295,14 @@ string const kb_keymap::printbindings(FuncRequest const & func) const
 }
 
 
-kb_keymap::Bindings 
+kb_keymap::Bindings
 kb_keymap::findbindings(FuncRequest const & func) const
 {
        return findbindings(func, kb_sequence(0, 0));
 }
 
 
-kb_keymap::Bindings 
+kb_keymap::Bindings
 kb_keymap::findbindings(FuncRequest const & func,
                        kb_sequence const & prefix) const
 {
@@ -313,7 +315,7 @@ kb_keymap::findbindings(FuncRequest const & func,
                if (cit->table.get()) {
                        kb_sequence seq = prefix;
                        seq.addkey(cit->code, cit->mod.first);
-                       Bindings res2 = 
+                       Bindings res2 =
                                cit->table->findbindings(func, seq);
                        res.insert(res.end(), res2.begin(), res2.end());
                } else if (cit->func == func) {
@@ -325,3 +327,17 @@ kb_keymap::findbindings(FuncRequest const & func,
 
        return res;
 }
+
+
+std::pair<LyXKeySym const *, key_modifier::state>
+kb_keymap::find1keybinding(FuncRequest const & func) const
+{
+       Table::const_iterator end = table.end();
+       for (Table::const_iterator cit = table.begin();
+           cit != end; ++cit) {
+               if (!cit->table.get() && cit->func == func)
+                       return std::make_pair(cit->code.get(), cit->mod.first);
+       }
+
+       return std::make_pair<LyXKeySym const *, key_modifier::state>(0, key_modifier::none);
+}