]> git.lyx.org Git - lyx.git/blobdiff - src/text3.C
explain why ownsClipbiard() does not work on Windows and OS X
[lyx.git] / src / text3.C
index 85cf5515d6225daac73e3a421b871ca8878b84d6..1aa9e8c53d30faa038a68e76f9a1dbfa03a3596d 100644 (file)
@@ -300,7 +300,7 @@ bool LyXText::isRTL(Buffer const & buffer, Paragraph const & par) const
 
 void LyXText::dispatch(LCursor & cur, FuncRequest & cmd)
 {
-       lyxerr[Debug::ACTION] << "LyXText::dispatch: cmd: " << cmd << endl;
+       LYXERR(Debug::ACTION) << "LyXText::dispatch: cmd: " << cmd << endl;
 
        // FIXME: We use the update flag to indicates wether a singlePar or a
        // full screen update is needed. We reset it here but shall we restore it
@@ -333,6 +333,10 @@ void LyXText::dispatch(LCursor & cur, FuncRequest & cmd)
                std::swap(pars_[pit], pars_[pit + 1]);
 
                ParIterator begin(cur);
+               // begin.pos() (== cur.pos()) may point beyond the end of the 
+               // paragraph referenced by begin. This would cause a crash
+               // in updateLabels()
+               begin.pos() = 0;
                ++cur.pit();
                ParIterator end = boost::next(ParIterator(cur));
                updateLabels(cur.buffer(), begin, end);
@@ -347,7 +351,12 @@ void LyXText::dispatch(LCursor & cur, FuncRequest & cmd)
                finishUndo();
                std::swap(pars_[pit], pars_[pit - 1]);
 
-               ParIterator end = boost::next(ParIterator(cur));
+               ParIterator end = ParIterator(cur);
+               // end.pos() (== cur.pos()) may point beyond the end of the 
+               // paragraph referenced by end. This would cause a crash
+               // in boost::next()
+               end.pos() = 0;
+               end = boost::next(end);
                --cur.pit();
                ParIterator begin(cur);
                updateLabels(cur.buffer(), begin, end);
@@ -863,7 +872,7 @@ void LyXText::dispatch(LCursor & cur, FuncRequest & cmd)
 
        case LFUN_LAYOUT: {
                string layout = to_ascii(cmd.argument());
-               lyxerr[Debug::INFO] << "LFUN_LAYOUT: (arg) " << layout << endl;
+               LYXERR(Debug::INFO) << "LFUN_LAYOUT: (arg) " << layout << endl;
 
                // Derive layout number from given argument (string)
                // and current buffer's textclass (number)
@@ -1127,12 +1136,8 @@ void LyXText::dispatch(LCursor & cur, FuncRequest & cmd)
                docstring::const_iterator cit = cmd.argument().begin();
                docstring::const_iterator end = cmd.argument().end();
                for (; cit != end; ++cit)
-#if 0
                        bv->getIntl().getTransManager().
-                               translateAndInsert(*cit, this);
-#else
-                       insertChar(bv->cursor(), *cit);
-#endif
+                               translateAndInsert(*cit, this, cur);
 
                cur.resetAnchor();
                moveCursor(cur, false);
@@ -1423,21 +1428,21 @@ void LyXText::dispatch(LCursor & cur, FuncRequest & cmd)
        }
 
        case LFUN_FINISHED_LEFT:
-               lyxerr[Debug::DEBUG] << "handle LFUN_FINISHED_LEFT:\n" << cur << endl;
+               LYXERR(Debug::DEBUG) << "handle LFUN_FINISHED_LEFT:\n" << cur << endl;
                break;
 
        case LFUN_FINISHED_RIGHT:
-               lyxerr[Debug::DEBUG] << "handle LFUN_FINISHED_RIGHT:\n" << cur << endl;
+               LYXERR(Debug::DEBUG) << "handle LFUN_FINISHED_RIGHT:\n" << cur << endl;
                ++cur.pos();
                break;
 
        case LFUN_FINISHED_UP:
-               lyxerr[Debug::DEBUG] << "handle LFUN_FINISHED_UP:\n" << cur << endl;
+               LYXERR(Debug::DEBUG) << "handle LFUN_FINISHED_UP:\n" << cur << endl;
                cursorUp(cur);
                break;
 
        case LFUN_FINISHED_DOWN:
-               lyxerr[Debug::DEBUG] << "handle LFUN_FINISHED_DOWN:\n" << cur << endl;
+               LYXERR(Debug::DEBUG) << "handle LFUN_FINISHED_DOWN:\n" << cur << endl;
                cursorDown(cur);
                break;
 
@@ -1563,7 +1568,7 @@ void LyXText::dispatch(LCursor & cur, FuncRequest & cmd)
                break;
 
        default:
-               lyxerr[Debug::ACTION]
+               LYXERR(Debug::ACTION)
                        << BOOST_CURRENT_FUNCTION
                        << ": Command " << cmd
                        << " not DISPATCHED by LyXText" << endl;
@@ -1925,6 +1930,7 @@ bool LyXText::getStatus(LCursor & cur, FuncRequest const & cmd,
        case LFUN_CLEARDOUBLEPAGE_INSERT:
        case LFUN_MATH_DISPLAY:
        case LFUN_MATH_IMPORT_SELECTION:
+       case LFUN_MATH_INSERT:
        case LFUN_MATH_MODE:
        case LFUN_MATH_MACRO:
        case LFUN_MATH_MATRIX: