]> git.lyx.org Git - lyx.git/blobdiff - src/text2.C
* Painter.h:
[lyx.git] / src / text2.C
index c916e07a6189a7769d72e50c57fead57c2c82686..96023861b0aec75c8615436777bb42faa2612075 100644 (file)
@@ -40,7 +40,6 @@
 #include "lyxfunc.h"
 #include "lyxrc.h"
 #include "lyxrow.h"
-#include "lyxrow_funcs.h"
 #include "paragraph.h"
 #include "paragraph_funcs.h"
 #include "ParagraphParameters.h"
 
 #include <sstream>
 
-using lyx::CoordCache;
-using lyx::docstring;
-using lyx::pit_type;
-using lyx::pos_type;
+
+namespace lyx {
 
 using std::endl;
 using std::ostringstream;
@@ -389,10 +386,7 @@ void LyXText::setLayout(LCursor & cur, string const & layout)
 }
 
 
-namespace {
-
-
-bool changeDepthAllowed(LyXText::DEPTH_CHANGE type,
+static bool changeDepthAllowed(LyXText::DEPTH_CHANGE type,
                        Paragraph const & par, int max_depth)
 {
        if (par.layout()->labeltype == LABEL_BIBLIO)
@@ -406,9 +400,6 @@ bool changeDepthAllowed(LyXText::DEPTH_CHANGE type,
 }
 
 
-}
-
-
 bool LyXText::changeDepthAllowed(LCursor & cur, DEPTH_CHANGE type) const
 {
        BOOST_ASSERT(this == cur.text());
@@ -421,7 +412,7 @@ bool LyXText::changeDepthAllowed(LCursor & cur, DEPTH_CHANGE type) const
        int max_depth = (beg != 0 ? pars_[beg - 1].getMaxDepthAfter() : 0);
 
        for (pit_type pit = beg; pit != end; ++pit) {
-               if (::changeDepthAllowed(type, pars_[pit], max_depth))
+               if (lyx::changeDepthAllowed(type, pars_[pit], max_depth))
                        return true;
                max_depth = pars_[pit].getMaxDepthAfter();
        }
@@ -439,7 +430,7 @@ void LyXText::changeDepth(LCursor & cur, DEPTH_CHANGE type)
 
        for (pit_type pit = beg; pit != end; ++pit) {
                Paragraph & par = pars_[pit];
-               if (::changeDepthAllowed(type, par, max_depth)) {
+               if (lyx::changeDepthAllowed(type, par, max_depth)) {
                        int const depth = par.params().depth();
                        if (type == INC_DEPTH)
                                par.params().depth(depth + 1);
@@ -511,7 +502,6 @@ bool LyXText::cursorHome(LCursor & cur)
 {
        BOOST_ASSERT(this == cur.text());
        Row const & row = cur.paragraph().getRow(cur.pos(),cur.boundary());
-
        return setCursor(cur, cur.pit(), row.pos());
 }
 
@@ -570,7 +560,7 @@ void LyXText::toggleFree(LCursor & cur, LyXFont const & font, bool toggleall)
        bool implicitSelection =
                font.language() == ignore_language
                && font.number() == LyXFont::IGNORE
-               && selectWordWhenUnderCursor(cur, lyx::WHOLE_WORD_STRICT);
+               && selectWordWhenUnderCursor(cur, WHOLE_WORD_STRICT);
 
        // Set font
        setFont(cur, font, toggleall);
@@ -597,7 +587,7 @@ string LyXText::getStringToIndex(LCursor const & cur)
                // in the language the implicit word selection is
                // disabled.
                LCursor tmpcur = cur;
-               selectWord(tmpcur, lyx::PREVIOUS_WORD);
+               selectWord(tmpcur, PREVIOUS_WORD);
 
                if (!tmpcur.selection())
                        cur.message(_("Nothing to index!"));
@@ -607,7 +597,7 @@ string LyXText::getStringToIndex(LCursor const & cur)
                        idxstring = tmpcur.selectionAsString(false);
        }
 
-       return lyx::to_utf8(idxstring);
+       return to_utf8(idxstring);
 }
 
 
@@ -637,7 +627,8 @@ void LyXText::setParagraph(LCursor & cur,
                        else
                                params.align(align);
                }
-               par.setLabelWidthString(labelwidthstring);
+               // FIXME UNICODE
+               par.setLabelWidthString(from_ascii(labelwidthstring));
                params.noindent(noindent);
        }
 }
@@ -648,8 +639,9 @@ void LyXText::insertInset(LCursor & cur, InsetBase * inset)
 {
        BOOST_ASSERT(this == cur.text());
        BOOST_ASSERT(inset);
-       // FIXME: change tracking (MG)
-       cur.paragraph().insertInset(cur.pos(), inset, Change(Change::INSERTED));
+       cur.paragraph().insertInset(cur.pos(), inset, 
+                                   Change(cur.buffer().params().trackChanges ?
+                                          Change::INSERTED : Change::UNCHANGED));
 }
 
 
@@ -805,21 +797,21 @@ pos_type LyXText::getColumnNearX(pit_type const pit,
                return 0;
        }
 
-       lyx::frontend::FontMetrics const & fm 
+       frontend::FontMetrics const & fm 
                = theFontMetrics(getLabelFont(par));
 
        while (vc < end && tmpx <= x) {
                c = bidi.vis2log(vc);
                last_tmpx = tmpx;
                if (body_pos > 0 && c == body_pos - 1) {
-                       string lsep = layout->labelsep;
-                       docstring dlsep(lsep.begin(), lsep.end());
-                       tmpx += r.label_hfill + fm.width(dlsep);
+                       // FIXME UNICODE
+                       docstring const lsep = from_utf8(layout->labelsep);
+                       tmpx += r.label_hfill + fm.width(lsep);
                        if (par.isLineSeparator(body_pos - 1))
                                tmpx -= singleWidth(par, body_pos - 1);
                }
 
-               if (hfillExpansion(par, row, c)) {
+               if (par.hfillExpansion(row, c)) {
                        tmpx += singleWidth(par, c);
                        if (c >= body_pos)
                                tmpx += r.hfill;
@@ -966,6 +958,10 @@ Row const & LyXText::getRowNearY(int y, pit_type pit) const
 // sets cursor recursively descending into nested editable insets
 InsetBase * LyXText::editXY(LCursor & cur, int x, int y)
 {
+       if (lyxerr.debugging(Debug::WORKAREA)) {
+               lyxerr << "LyXText::editXY(cur, " << x << ", " << y << ")" << std::endl;
+               bv()->coordCache().dump();
+       }
        pit_type pit = getPitNearY(y);
        BOOST_ASSERT(pit != -1);
        Row const & row = getRowNearY(y, pit);
@@ -990,8 +986,11 @@ InsetBase * LyXText::editXY(LCursor & cur, int x, int y)
 
        // This should be just before or just behind the
        // cursor position set above.
-       BOOST_ASSERT((pos != 0 && inset == pars_[pit].getInset(pos - 1))
-                    || inset == pars_[pit].getInset(pos));
+        InsetBase * inset2 = pars_[pit].getInset(pos - 1);
+        InsetBase * inset3 = pars_[pit].getInset(pos);
+        
+       BOOST_ASSERT((pos != 0 && inset == inset2)
+                    || inset == inset3);
        // Make sure the cursor points to the position before
        // this inset.
        if (inset == pars_[pit].getInset(pos - 1))
@@ -1262,13 +1261,8 @@ bool LyXText::deleteEmptyParagraphMechanism(LCursor & cur, LCursor & old)
                    && old.pos() < oldpar.size()
                    && oldpar.isLineSeparator(old.pos())
                    && oldpar.isLineSeparator(old.pos() - 1)
-               // FIXME: change tracking (MG)
-                   && oldpar.lookupChange(old.pos() - 1) != Change(Change::DELETED)) {
-                       // We need to set the text to Change::INSERTED to
-                       // get it erased properly
-                       // FIXME: change tracking (MG)
-                       oldpar.setChange(old.pos() -1, Change(Change::INSERTED));
-                       oldpar.erase(old.pos() - 1);
+                   && !oldpar.isDeleted(old.pos() - 1)) {
+                       oldpar.eraseChar(old.pos() - 1, false); // do not track changes in DEPM
 #ifdef WITH_WARNINGS
 #warning This will not work anymore when we have multiple views of the same buffer
 // In this case, we will have to correct also the cursors held by
@@ -1349,3 +1343,6 @@ int defaultRowHeight()
 {
        return int(theFontMetrics(LyXFont(LyXFont::ALL_SANE)).maxHeight() *  1.2);
 }
+
+
+} // namespace lyx