]> git.lyx.org Git - lyx.git/blobdiff - src/text3.C
Fix my breakage. Sorry guys.
[lyx.git] / src / text3.C
index 5f37f7de5b21d9e6c091cb5fb5455a17f0d5bdff..e46b83972155339d13ccfa9cb4015d2e309f6f76 100644 (file)
@@ -54,7 +54,7 @@
 
 #include "support/lstrings.h"
 #include "support/lyxlib.h"
-#include "support/tostr.h"
+#include "support/convert.h"
 
 #include "mathed/math_hullinset.h"
 #include "mathed/math_macrotemplate.h"
@@ -83,10 +83,6 @@ using std::vector;
 
 extern string current_layout;
 
-// the selection possible is needed, that only motion events are
-// used, where the button press event was on the drawing area too
-bool selection_possible = false;
-
 
 namespace {
 
@@ -462,7 +458,7 @@ void LyXText::dispatch(LCursor & cur, FuncRequest & cmd)
                        cur.undispatched();
                }
                break;
-               
+
        case LFUN_ENDBUFSEL:
                if (cur.size() == 1) {
                        if (!cur.selection())
@@ -757,15 +753,15 @@ void LyXText::dispatch(LCursor & cur, FuncRequest & cmd)
        case LFUN_PARAGRAPH_SPACING: {
                Paragraph & par = cur.paragraph();
                Spacing::Space cur_spacing = par.params().spacing().getSpace();
-               float cur_value = 1.0;
+               string cur_value = "1.0";
                if (cur_spacing == Spacing::Other)
-                       cur_value = par.params().spacing().getValue();
+                       cur_value = par.params().spacing().getValueAsString();
 
                istringstream is(cmd.argument);
                string tmp;
                is >> tmp;
                Spacing::Space new_spacing = cur_spacing;
-               float new_value = cur_value;
+               string new_value = cur_value;
                if (tmp.empty()) {
                        lyxerr << "Missing argument to `paragraph-spacing'"
                               << endl;
@@ -777,10 +773,10 @@ void LyXText::dispatch(LCursor & cur, FuncRequest & cmd)
                        new_spacing = Spacing::Double;
                } else if (tmp == "other") {
                        new_spacing = Spacing::Other;
-                       float tmpval = 0.0;
+                       string tmpval = "0.0";
                        is >> tmpval;
                        lyxerr << "new_value = " << tmpval << endl;
-                       if (tmpval != 0.0)
+                       if (tmpval != "0.0")
                                new_value = tmpval;
                } else if (tmp == "default") {
                        new_spacing = Spacing::Default;
@@ -788,7 +784,7 @@ void LyXText::dispatch(LCursor & cur, FuncRequest & cmd)
                        lyxerr << _("Unknown spacing argument: ")
                               << cmd.argument << endl;
                }
-               if (cur_spacing != new_spacing || cur_value != new_value) 
+               if (cur_spacing != new_spacing || cur_value != new_value)
                        par.params().spacing(Spacing(new_spacing, new_value));
                break;
        }
@@ -909,8 +905,8 @@ void LyXText::dispatch(LCursor & cur, FuncRequest & cmd)
                break;
 
        case LFUN_GETXY:
-               cur.message(tostr(cursorX(cur.top())) + ' '
-                         + tostr(cursorY(cur.top())));
+               cur.message(convert<string>(cursorX(cur.top())) + ' '
+                         + convert<string>(cursorY(cur.top())));
                break;
 
        case LFUN_SETXY: {
@@ -1084,7 +1080,6 @@ void LyXText::dispatch(LCursor & cur, FuncRequest & cmd)
 
        case LFUN_MOUSE_TRIPLE:
                if (cmd.button() == mouse_button::button1) {
-                       selection_possible = true;
                        cursorHome(cur);
                        cur.resetAnchor();
                        cursorEnd(cur);
@@ -1095,7 +1090,6 @@ void LyXText::dispatch(LCursor & cur, FuncRequest & cmd)
 
        case LFUN_MOUSE_DOUBLE:
                if (cmd.button() == mouse_button::button1) {
-                       selection_possible = true;
                        selectWord(cur, lyx::WHOLE_WORD_STRICT);
                        bv->haveSelection(cur.selection());
                }
@@ -1106,7 +1100,6 @@ void LyXText::dispatch(LCursor & cur, FuncRequest & cmd)
                // Right click on a footnote flag opens float menu
                if (cmd.button() == mouse_button::button3) {
                        cur.clearSelection();
-                       selection_possible = false;
                        break;
                }
 
@@ -1120,8 +1113,6 @@ void LyXText::dispatch(LCursor & cur, FuncRequest & cmd)
                        paste_internally = true;
                }
 
-               selection_possible = true;
-
                // Clear the selection
                cur.clearSelection();
 
@@ -1137,10 +1128,6 @@ void LyXText::dispatch(LCursor & cur, FuncRequest & cmd)
                // Set cursor here.
                bv->cursor() = cur;
 
-               // Don't allow selection after a big jump.
-               //if (bv->fitCursor())
-               //      selection_possible = false;
-
                // Insert primary selection with middle mouse
                // if there is a local selection in the current buffer,
                // insert this
@@ -1149,7 +1136,6 @@ void LyXText::dispatch(LCursor & cur, FuncRequest & cmd)
                                bv->owner()->dispatch(FuncRequest(LFUN_PASTE));
                        else
                                bv->owner()->dispatch(FuncRequest(LFUN_PASTESELECTION, "paragraph"));
-                       selection_possible = false;
                }
 
                break;
@@ -1159,14 +1145,6 @@ void LyXText::dispatch(LCursor & cur, FuncRequest & cmd)
                // Only use motion with button 1
                //if (cmd.button() != mouse_button::button1)
                //      return false;
-               // We want to use only motion events for which
-               // the button press event was on the drawing area too.
-               if (!selection_possible) {
-                       lyxerr[Debug::ACTION] << "BufferView::Pimpl::"
-                               "dispatch: no selection possible\n";
-                       lyxerr << "BufferView::Pimpl::dispatch: no selection possible\n";
-                       break;
-               }
 
                // ignore motions deeper nested than the real anchor
                LCursor & bvcur = cur.bv().cursor();
@@ -1175,7 +1153,7 @@ void LyXText::dispatch(LCursor & cur, FuncRequest & cmd)
 
                        int const wh = bv->workHeight();
                        int const y = std::max(0, std::min(wh - 1, cmd.y));
-                                         
+
                        setCursorFromCoordinates(cur, cmd.x, y);
                        cur.x_target() = cmd.x;
                        if (cmd.y >= wh)
@@ -1198,15 +1176,13 @@ void LyXText::dispatch(LCursor & cur, FuncRequest & cmd)
                                bvcur.selection() = true;
                                lyxerr << "MOTION: " << bv->cursor() << endl;
                        }
-                       
+
                } else
                        cur.undispatched();
                break;
        }
 
        case LFUN_MOUSE_RELEASE: {
-               selection_possible = false;
-
                if (cmd.button() == mouse_button::button2)
                        break;
 
@@ -1342,7 +1318,11 @@ void LyXText::dispatch(LCursor & cur, FuncRequest & cmd)
 
        case LFUN_MATH_IMPORT_SELECTION:
        case LFUN_MATH_MODE:
-               mathDispatch(cur, cmd, false);
+               if (cmd.argument == "on")
+                       // don't pass "on" as argument
+                       mathDispatch(cur, FuncRequest(LFUN_MATH_MODE), false);
+               else
+                       mathDispatch(cur, cmd, false);
                break;
 
        case LFUN_MATH_MACRO:
@@ -1359,6 +1339,14 @@ void LyXText::dispatch(LCursor & cur, FuncRequest & cmd)
                }
                break;
 
+       // passthrough hat and underscore outside mathed:
+       case LFUN_SUBSCRIPT:
+               mathDispatch(cur, FuncRequest(LFUN_SELFINSERT, "_"), false);
+               break;
+       case LFUN_SUPERSCRIPT:
+               mathDispatch(cur, FuncRequest(LFUN_SELFINSERT, "^"), false);
+               break;
+
        case LFUN_INSERT_MATH:
        case LFUN_INSERT_MATRIX:
        case LFUN_MATH_DELIM: {
@@ -1498,7 +1486,7 @@ void LyXText::dispatch(LCursor & cur, FuncRequest & cmd)
                InsetBase & inset = cur.inset();
                bool const accept = !inset.forceDefaultParagraphs(&inset);
 
-               data = "update " + tostr(accept) + '\n' + data;
+               data = "update " + convert<string>(accept) + '\n' + data;
                bv->owner()->getDialogs().update("paragraph", data);
                break;
        }
@@ -1928,6 +1916,8 @@ bool LyXText::getStatus(LCursor & cur, FuncRequest const & cmd,
        case LFUN_INSERT_MATH:
        case LFUN_INSERT_MATRIX:
        case LFUN_MATH_DELIM:
+       case LFUN_SUBSCRIPT:
+       case LFUN_SUPERSCRIPT:
        case LFUN_DEFAULT:
        case LFUN_UNDERLINE:
        case LFUN_FONT_SIZE: