]> git.lyx.org Git - lyx.git/blobdiff - src/text.C
Lars says _(_(b)) is a bug ... fix
[lyx.git] / src / text.C
index 4568a031077b7ee7aca15d6bb7b6bddbe1de749f..46259d4d8b7b5f20dc52bf6fc9ba559670616bea 100644 (file)
 #include "bufferparams.h"
 #include "buffer.h"
 #include "debug.h"
+#include "intl.h"
 #include "lyxrc.h"
 #include "encoding.h"
 #include "frontends/LyXView.h"
 #include "frontends/Painter.h"
 #include "frontends/font_metrics.h"
 #include "frontends/screen.h"
+#include "frontends/WorkArea.h"
 #include "bufferview_funcs.h"
 #include "BufferView.h"
 #include "language.h"
 #include "ParagraphParameters.h"
 #include "undo_funcs.h"
 #include "WordLangTuple.h"
-#include "funcrequest.h"
+#include "paragraph_funcs.h"
 
 #include "insets/insetbib.h"
 #include "insets/insettext.h"
@@ -79,7 +81,7 @@ int LyXText::workWidth(BufferView * bview, Inset * inset) const
                Buffer::inset_iterator it = bview->buffer()->inset_iterator_begin();
                Buffer::inset_iterator end = bview->buffer()->inset_iterator_end();
                for (; it != end; ++it) {
-                       if (*it == inset) {
+                       if (&(*it) == inset) {
                                par = it.getPar();
                                pos = it.getPos();
                                break;
@@ -148,12 +150,14 @@ unsigned char LyXText::transformChar(unsigned char c, Paragraph * par,
                }
 
        if (Encodings::is_arabic(next_char)) {
-               if (Encodings::is_arabic(prev_char))
+               if (Encodings::is_arabic(prev_char) &&
+                       !Encodings::is_arabic_special(prev_char))
                        return Encodings::TransformChar(c, Encodings::FORM_MEDIAL);
                else
                        return Encodings::TransformChar(c, Encodings::FORM_INITIAL);
        } else {
-               if (Encodings::is_arabic(prev_char))
+               if (Encodings::is_arabic(prev_char) &&
+                       !Encodings::is_arabic_special(prev_char))
                        return Encodings::TransformChar(c, Encodings::FORM_FINAL);
                else
                        return Encodings::TransformChar(c, Encodings::FORM_ISOLATED);
@@ -688,13 +692,6 @@ bool LyXText::draw(DrawRowParams & p, pos_type & vpos)
 
        drawForeignMark(p, orig_x, orig_font);
 
-#ifdef INHERIT_LANGUAGE
-#ifdef WITH_WARNINGS
-       if ((font.language() == inherit_language) ||
-               (font.language() == ignore_language))
-               lyxerr << "No this shouldn't happen!\n";
-#endif
-#endif
        return true;
 }
 
@@ -734,8 +731,7 @@ int LyXText::leftMargin(BufferView * bview, Row const * row) const
        } else {
                // find the next level paragraph
 
-               Paragraph * newpar =
-                       row->par()->outerHook();
+               Paragraph * newpar = row->par()->outerHook();
 
                // make a corresponding row. Needed to call LeftMargin()
 
@@ -853,7 +849,7 @@ int LyXText::leftMargin(BufferView * bview, Row const * row) const
                LyXLength const len = row->par()->params().leftIndent();
                int const tw = inset_owner ?
                        inset_owner->latexTextWidth(bview) : workWidth(bview);
-               x += len.inPixels(tw, bview->text->defaultHeight());
+               x += len.inPixels(tw);
        }
 
        LyXAlignment align; // wrong type
@@ -1758,8 +1754,8 @@ void LyXText::breakParagraph(BufferView * bview, char keep_layout)
        // paragraph before or behind and we should react on that one
        // but we can fix this in 1.3.0 (Jug 20020509)
        bool const isempty = (layout->keepempty && cursor.par()->empty());
-       cursor.par()->breakParagraph(bview->buffer()->params, cursor.pos(),
-                               keep_layout);
+       ::breakParagraph(bview->buffer()->params, cursor.par(), cursor.pos(),
+                      keep_layout);
 
        // well this is the caption hack since one caption is really enough
        if (layout->labeltype == LABEL_SENSITIVE) {
@@ -2032,11 +2028,10 @@ void LyXText::insertChar(BufferView * bview, char c)
                // we would not get a rebreak!
                row->fill(fill(bview, row, workWidth(bview)));
        }
+
        if (c == Paragraph::META_INSET || row->fill() < 0) {
                refresh_y = y;
                refresh_row = row;
-               refresh_x = cursor.x();
-               refresh_pos = cursor.pos();
                status(bview, LyXText::NEED_MORE_REFRESH);
                breakAgainOneRow(bview, row);
                // will the cursor be in another row now?
@@ -2061,9 +2056,7 @@ void LyXText::insertChar(BufferView * bview, char c)
                        need_break_row = 0;
        } else {
                refresh_y = y;
-               refresh_x = cursor.x();
                refresh_row = row;
-               refresh_pos = cursor.pos();
 
                int const tmpheight = row->height();
                setHeightOfRow(bview, row);
@@ -2290,7 +2283,7 @@ void LyXText::cursorLeftOneWord(BufferView * bview)  const
 }
 
 
-void LyXText::cursorLeftOneWord(LyXCursor  & cur)  const
+void LyXText::cursorLeftOneWord(LyXCursor & cur) const
 {
        // treat HFills, floats and Insets as words
        cur = cursor;
@@ -2312,7 +2305,7 @@ void LyXText::cursorLeftOneWord(LyXCursor  & cur)  const
                }
        } else {                // Here, cur != 0
                while (cur.pos() > 0 &&
-                      cur.par()->isWord(cur.pos()-1))
+                      cur.par()->isWord(cur.pos() - 1))
                        cur.pos(cur.pos() - 1);
        }
 }
@@ -2330,8 +2323,8 @@ void LyXText::getWord(LyXCursor & from, LyXCursor & to,
                if (cursor.pos() == 0 || cursor.pos() == cursor.par()->size()
                    || cursor.par()->isSeparator(cursor.pos())
                    || cursor.par()->isKomma(cursor.pos())
-                   || cursor.par()->isSeparator(cursor.pos() -1)
-                   || cursor.par()->isKomma(cursor.pos() -1)) {
+                   || cursor.par()->isSeparator(cursor.pos() - 1)
+                   || cursor.par()->isKomma(cursor.pos() - 1)) {
                        to = from;
                        return;
                }
@@ -2401,7 +2394,8 @@ LyXText::selectNextWordToSpellcheck(BufferView * bview, float & value) const
        if (the_locking_inset) {
                WordLangTuple word = the_locking_inset->selectNextWordToSpellcheck(bview, value);
                if (!word.word().empty()) {
-                       value += float(cursor.y())/float(height);
+                       value += float(cursor.y());
+                       value /= float(height);
                        return word;
                }
                // we have to go on checking so move cursor to the next char
@@ -2795,7 +2789,7 @@ void LyXText::backspace(BufferView * bview)
                    && cursor.par()->getAlign() == tmppar->getAlign()) {
                        removeParagraph(tmprow);
                        removeRow(tmprow);
-                       cursor.par()->pasteParagraph(bview->buffer()->params);
+                       mergeParagraph(bview->buffer()->params, cursor.par());
 
                        if (!cursor.pos() || !cursor.par()->isSeparator(cursor.pos() - 1))
                                ; //cursor.par()->insertChar(cursor.pos(), ' ');
@@ -3277,7 +3271,7 @@ int LyXText::drawLengthMarker(DrawRowParams & p, string const & prefix,
        switch (vsp.kind()) {
        case VSpace::LENGTH:
        {
-               str = prefix + " (" + vsp.asLyXCommand() + ")";
+               str = prefix + " (" + vsp.asLyXCommand() + ')';
                // adding or removing space
                bool const added = !(vsp.length().len().value() < 0.0);
                ty1 = added ? (start + arrow_size) : start;
@@ -3286,8 +3280,8 @@ int LyXText::drawLengthMarker(DrawRowParams & p, string const & prefix,
                by2 = added ? end : (end - arrow_size);
                break;
        }
-       case VSpace:: VFILL:
-               str = prefix + " (vertical fill)";
+       case VSpace::VFILL:
+               str = prefix + _(" (vertical fill)");
                ty1 = ty2 = start;
                by1 = by2 = end;
                break;
@@ -3794,7 +3788,7 @@ LyXText::getColumnNearX(BufferView * bview, Row * row, int & x,
                }
 
                if (hfillExpansion(bview->buffer(), row, c)) {
-                       x += singleWidth(bview, row->par(), c);
+                       tmpx += singleWidth(bview, row->par(), c);
                        if (c >= main_body)
                                tmpx += fill_hfill;
                        else
@@ -3948,49 +3942,3 @@ int LyXText::getDepth() const
 {
        return cursor.par()->getDepth();
 }
-
-
-Inset::RESULT LyXText::lfunAppendix(FuncRequest const & cmd)
-{
-       BufferView * bv = cmd.view();
-       // what is this good for?
-       if (!bv->available())
-               return Inset::UNDISPATCHED;
-
-       Paragraph * par = cursor.par();
-       bool start = !par->params().startOfAppendix();
-
-       // ensure that we have only one start_of_appendix in this document
-       Paragraph * tmp = ownerParagraph();
-       for (; tmp; tmp = tmp->next()) {
-               tmp->params().startOfAppendix(false);
-       }
-
-       par->params().startOfAppendix(start);
-
-       // we can set the refreshing parameters now
-       status(cmd.view(), LyXText::NEED_MORE_REFRESH);
-       refresh_y = 0;
-       refresh_row = 0; // not needed for full update
-       updateCounters(cmd.view());
-       setCursor(cmd.view(), cursor.par(), cursor.pos());
-       bv->update(this,
-                                BufferView::SELECT
-                                | BufferView::FITCUR
-                                | BufferView::CHANGE);
-       return Inset::DISPATCHED;
-}
-
-
-Inset::RESULT LyXText::dispatch(FuncRequest const & cmd)
-{
-       switch (cmd.action) {
-               case LFUN_APPENDIX:
-                       return lfunAppendix(cmd);
-
-               default:
-                       return Inset::UNDISPATCHED;
-       }
-       // shut up compiler
-       return Inset::UNDISPATCHED;
-}