]> git.lyx.org Git - lyx.git/blobdiff - src/kbmap.h
Reduce Michael's buglist.
[lyx.git] / src / kbmap.h
index cfb4584ac7e99cd7d3ee96539cecd61d279ec89f..a21a66255802639cbb88123a4f369f9a40779a0e 100644 (file)
 #endif
 
 #include <list>
+#include <boost/smart_ptr.hpp>
 
 #include "LString.h"
 
-using std::list;
-
 class kb_sequence;
 
 /// Defines key maps and actions for key sequences
 class kb_keymap {
 public:
-       ///
-       ~kb_keymap();
-       
        /** Bind a key-sequence to an action.
            Returns 0 on success. Otherwise, position in string where
            error occured. */
-       int bind(char const * seq, int action);
+       string::size_type bind(string const & seq, int action);
 
        ///
        void print(string & buf) const;
@@ -40,7 +36,8 @@ public:
                   unsigned int mod, kb_sequence * seq) const;
 
        /// Given an action, find all keybindings.
-       string findbinding(int action) const;
+       string const findbinding(int action,
+                                string const & prefix = string()) const;
 private:
        ///
        struct kb_key {
@@ -51,7 +48,7 @@ private:
                unsigned int mod;
                
                /// Keymap for prefix keys
-               kb_keymap * table;
+               boost::shared_ptr<kb_keymap> table;
                
                /// Action for !prefix keys
                int action;
@@ -61,7 +58,7 @@ private:
        /// Define a new key sequence
        int defkey(kb_sequence * seq, int action, int idx = 0);
        ///
-       static string keyname(kb_key const & k);
+       static string const keyname(kb_key const & k);
        
        ///
        static
@@ -71,7 +68,7 @@ private:
                return table.empty();
        }
        ///
-       typedef list<kb_key> Table;
+       typedef std::list<kb_key> Table;
        ///
        Table table;
 };