]> git.lyx.org Git - lyx.git/blobdiff - src/lyxfunc.C
Fixes for/in insettabular/text.
[lyx.git] / src / lyxfunc.C
index 2510ea6b43bade9f38ff43fdbcb2d95d1115c57c..11578c6fe6df84974176a08b5f926c73e5f6fd6b 100644 (file)
@@ -91,8 +91,8 @@ using std::pair;
 using std::endl;
 using std::find_if;
 
-extern void math_insert_symbol(string const &);
-extern bool math_insert_greek(char);
+extern void math_insert_symbol(BufferView *, string const &);
+extern bool math_insert_greek(BufferView *, char);
 extern BufferList bufferlist;
 extern LyXServer * lyxserver;
 extern int greek_kb_flag;
@@ -273,10 +273,31 @@ int LyXFunc::processKeySym(KeySym keysym, unsigned int state)
        } else if (action == LFUN_SELFINSERT) {
                // We must set the argument to the char looked up by
                // XKeysymToString
-               char const * tmp = XKeysymToString(keysym);
-               // if (!argument.empty()) {
-               argument = tmp ? tmp : "";
-               // }
+               XKeyEvent xke;
+               xke.type = KeyPress;
+               xke.serial = 0;
+               xke.send_event = False;
+               xke.display = fl_get_display();
+               xke.window = 0;
+               xke.root = 0;
+               xke.subwindow = 0;
+               xke.time = 0;
+               xke.x = 0;
+               xke.y = 0;
+               xke.x_root = 0;
+               xke.y_root = 0;
+               xke.state = state;
+               xke.keycode = XKeysymToKeycode(fl_get_display(), keysym);
+               xke.same_screen = True;
+               char ret[10];
+               KeySym tmpkeysym;
+               int res = XLookupString(&xke, ret, 10, &tmpkeysym, 0);
+               //Assert(keysym == tmpkeysym);
+               lyxerr[Debug::KEY] << "TmpKeysym ["
+                                  << tmpkeysym << "]" << endl;
+               
+               if (res > 0)
+                       argument = string(ret, res);
                lyxerr[Debug::KEY] << "SelfInsert arg["
                                   << argument << "]" << endl;
        }
@@ -996,15 +1017,15 @@ string const LyXFunc::Dispatch(int ac,
                break;
                
        case LFUN_DEPTH:
-               changeDepth(owner->view(), 0);
+               changeDepth(owner->view(), text, 0);
                break;
                
        case LFUN_DEPTH_MIN:
-               changeDepth(owner->view(), -1);
+               changeDepth(owner->view(), text, -1);
                break;
                
        case LFUN_DEPTH_PLUS:
-               changeDepth(owner->view(), 1);
+               changeDepth(owner->view(), text, 1);
                break;
                
        case LFUN_FREE:
@@ -1823,7 +1844,7 @@ string const LyXFunc::Dispatch(int ac,
                                owner->view()->text->cursor;
                        owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
                        // It is possible to make it a lot faster still
-                       // just comment out the lone below...
+                       // just comment out the line below...
                        owner->view()->showCursor();
                } else {
                        owner->view()->cut();
@@ -1933,13 +1954,17 @@ string const LyXFunc::Dispatch(int ac,
        case LFUN_BACKSPACE:
        {
                if (!owner->view()->text->selection) {
+#if 0
                        if (owner->getIntl()->getTrans()->backspace()) {
+#else
+                       if (owner->getIntl()->getTrans().backspace()) {
+#endif
                                owner->view()->text->Backspace(owner->view());
                                owner->view()->text->sel_cursor = 
                                        owner->view()->text->cursor;
                                owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
                                // It is possible to make it a lot faster still
-                               // just comment out the lone below...
+                               // just comment out the line below...
                                owner->view()->showCursor();
                        }
                } else {
@@ -2396,10 +2421,16 @@ string const LyXFunc::Dispatch(int ac,
                
                if (keyseq.length == -1 && keyseq.getiso() != 0) 
                        c = keyseq.getiso();
-               
+
+#if 0
                owner->getIntl()->getTrans()->
                        deadkey(c, get_accent(action).accent, 
                                owner->view()->text);
+#else
+               owner->getIntl()->getTrans()
+                       .deadkey(c, get_accent(action).accent, 
+                               owner->view()->text);
+#endif
                
                // Need to reset, in case the minibuffer calls these
                // actions
@@ -2489,7 +2520,7 @@ string const LyXFunc::Dispatch(int ac,
               
        case LFUN_INSERT_MATH:
        {
-               math_insert_symbol(argument);
+               math_insert_symbol(owner->view(), argument);
        }
        break;
        
@@ -2920,10 +2951,19 @@ string const LyXFunc::Dispatch(int ac,
                        for (string::size_type i = 0;
                             i < argument.length(); ++i) {
                                if (greek_kb_flag) {
-                                       if (!math_insert_greek(argument[i]))
+                                       if (!math_insert_greek(owner->view(),
+                                                              argument[i]))
+#if 0
                                                owner->getIntl()->getTrans()->TranslateAndInsert(argument[i], owner->view()->text);
+#else
+                                               owner->getIntl()->getTrans().TranslateAndInsert(argument[i], owner->view()->text);
+#endif
                                } else
+#if 0
                                        owner->getIntl()->getTrans()->TranslateAndInsert(argument[i], owner->view()->text);
+#else
+                                       owner->getIntl()->getTrans().TranslateAndInsert(argument[i], owner->view()->text);
+#endif
                        }
 
                        owner->view()->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);