]> git.lyx.org Git - lyx.git/blobdiff - src/text2.C
*** empty log message ***
[lyx.git] / src / text2.C
index 7d4172e5ffa6ec01b3b3288919ac3e4d24653bf4..caaa887447852a72d031f4f13dbad8c409ff93f3 100644 (file)
@@ -120,16 +120,26 @@ LyXFont const realizeFont(LyXFont const & font,
        while (par && par_depth && !tmpfont.resolved()) {
                par = par->outerHook();
                if (par) {
+#ifndef INHERIT_LANGUAGE
+                       tmpfont.realize(textclasslist.
+                                       Style(buf->params.textclass,
+                                             par->getLayout()).font);
+#else
                        tmpfont.realize(textclasslist.
                                        Style(buf->params.textclass,
                                              par->getLayout()).font,
-                                                       buf->params.language);
+                                       buf->params.language);
+#endif
                        par_depth = par->getDepth();
                }
        }
 
+#ifndef INHERIT_LANGUAGE
+       tmpfont.realize(textclasslist.TextClass(buf->params.textclass).defaultfont());
+#else
        tmpfont.realize(textclasslist.TextClass(buf->params.textclass).defaultfont(),
                        buf->params.language);
+#endif
 
        return tmpfont;
 }
@@ -160,10 +170,18 @@ LyXFont const LyXText::getFont(Buffer const * buf, Paragraph * par,
                                // 1% goes here
                        LyXFont f = par->getFontSettings(buf->params,
                                                         pos);
+#ifndef INHERIT_LANGUAGE
+                       return f.realize(layout.reslabelfont);
+#else
                        return f.realize(layout.reslabelfont, buf->params.language);
+#endif
                } else {
                        LyXFont f = par->getFontSettings(buf->params, pos);
+#ifndef INHERIT_LANGUAGE
+                       return f.realize(layout.resfont);
+#else
                        return f.realize(layout.resfont, buf->params.language);
+#endif
                }
        }
        
@@ -180,7 +198,11 @@ LyXFont const LyXText::getFont(Buffer const * buf, Paragraph * par,
        }
 
        LyXFont tmpfont = par->getFontSettings(buf->params, pos);
+#ifndef INHERIT_LANGUAGE
+       tmpfont.realize(layoutfont);
+#else
        tmpfont.realize(layoutfont, buf->params.language);
+#endif
        
        return realizeFont(tmpfont, buf, par);
 }
@@ -222,7 +244,7 @@ void LyXText::setCharFont(BufferView * bv, Paragraph * par,
 {
        Buffer const * buf = bv->buffer();
        LyXFont font = getFont(buf, par, pos);
-       font.update(fnt, toggleall);
+       font.update(fnt, buf->params.language, toggleall);
        // Let the insets convert their font
        if (par->getChar(pos) == Paragraph::META_INSET) {
                Inset * inset = par->getInset(pos);
@@ -253,15 +275,25 @@ void LyXText::setCharFont(BufferView * bv, Paragraph * par,
                while (!layoutfont.resolved() && tp && tp->getDepth()) {
                        tp = tp->outerHook();
                        if (tp)
+#ifndef INHERIT_LANGUAGE
+                               layoutfont.realize(textclasslist.
+                                                  Style(buf->params.textclass,
+                                                        tp->getLayout()).font);
+#else
                                layoutfont.realize(textclasslist.
                                                   Style(buf->params.textclass,
                                                         tp->getLayout()).font,
                                                   buf->params.language);
+#endif
                }
        }
 
+#ifndef INHERIT_LANGUAGE
+       layoutfont.realize(textclasslist.TextClass(buf->params.textclass).defaultfont());
+#else
        layoutfont.realize(textclasslist.TextClass(buf->params.textclass).defaultfont(),
                           buf->params.language);
+#endif
 
        // Now, reduce font against full layout font
        font.reduce(layoutfont);
@@ -293,15 +325,25 @@ void LyXText::setCharFont(Buffer const * buf, Paragraph * par,
                while (!layoutfont.resolved() && tp && tp->getDepth()) {
                        tp = tp->outerHook();
                        if (tp)
+#ifndef INHERIT_LANGUAGE
+                               layoutfont.realize(textclasslist.
+                                                  Style(buf->params.textclass,
+                                                        tp->getLayout()).font);
+#else
                                layoutfont.realize(textclasslist.
                                                   Style(buf->params.textclass,
                                                         tp->getLayout()).font,
                                                   buf->params.language);
+#endif
                }
        }
 
+#ifndef INHERIT_LANGUAGE
+       layoutfont.realize(textclasslist.TextClass(buf->params.textclass).defaultfont());
+#else
        layoutfont.realize(textclasslist.TextClass(buf->params.textclass).defaultfont(),
                           buf->params.language);
+#endif
 
        // Now, reduce font against full layout font
        font.reduce(layoutfont);
@@ -706,14 +748,20 @@ void LyXText::setFont(BufferView * bview, LyXFont const & font, bool toggleall)
                                                   cursor.par());
                }
                // Update current font
-               real_current_font.update(font, toggleall);
+               real_current_font.update(font, 
+                                        bview->buffer()->params.language,
+                                        toggleall);
 
                // Reduce to implicit settings
                current_font = real_current_font;
                current_font.reduce(layoutfont);
                // And resolve it completely
+#ifndef INHERIT_LANGUAGE
+               real_current_font.realize(layoutfont);
+#else
                real_current_font.realize(layoutfont,
                                          bview->buffer()->params.language);
+#endif
                return;
        }
 
@@ -965,7 +1013,8 @@ void LyXText::setSelection(BufferView * bview)
 }
 
 
-string const LyXText::selectionAsString(Buffer const * buffer) const
+string const LyXText::selectionAsString(Buffer const * buffer,
+                                       bool label) const
 {
        if (!selection.set()) return string();
        string result;
@@ -974,7 +1023,8 @@ string const LyXText::selectionAsString(Buffer const * buffer) const
        if (selection.start.par() == selection.end.par()) {
                result += selection.start.par()->asString(buffer,
                                                          selection.start.pos(),
-                                                         selection.end.pos());
+                                                         selection.end.pos(),
+                                                         label);
                return result;
        }
        
@@ -983,7 +1033,8 @@ string const LyXText::selectionAsString(Buffer const * buffer) const
        // First paragraph in selection
        result += selection.start.par()->asString(buffer,
                                                  selection.start.pos(),
-                                                 selection.start.par()->size())
+                                                 selection.start.par()->size(),
+                                                 label)
                + "\n\n";
        
        // The paragraphs in between (if any)
@@ -991,13 +1042,14 @@ string const LyXText::selectionAsString(Buffer const * buffer) const
        tmpcur.par(tmpcur.par()->next());
        while (tmpcur.par() != selection.end.par()) {
                result += tmpcur.par()->asString(buffer, 0,
-                                                tmpcur.par()->size()) +"\n\n";
+                                                tmpcur.par()->size(),
+                                                label) + "\n\n";
                tmpcur.par(tmpcur.par()->next());
        }
 
        // Last paragraph in selection
        result += selection.end.par()->asString(buffer, 0,
-                                               selection.end.pos());
+                                               selection.end.pos(), label);
        
        return result;
 }
@@ -1105,7 +1157,7 @@ LyXText::getStringToIndex(BufferView * bview)
                return string();
        }
 
-       idxstring = selectionAsString(bview->buffer());
+       idxstring = selectionAsString(bview->buffer(), false);
        
        // Implicit selections are cleared afterwards
        //and cursor is set to the original position.
@@ -1141,6 +1193,7 @@ void LyXText::setParagraph(BufferView * bview,
                           bool pagebreak_top, bool pagebreak_bottom,
                           VSpace const & space_top,
                           VSpace const & space_bottom,
+                           Spacing const & spacing,
                           LyXAlignment align, 
                           string labelwidthstring,
                           bool noindent) 
@@ -1181,6 +1234,7 @@ void LyXText::setParagraph(BufferView * bview,
                cursor.par()->params().pagebreakBottom(pagebreak_bottom);
                cursor.par()->params().spaceTop(space_top);
                cursor.par()->params().spaceBottom(space_bottom);
+                cursor.par()->params().spacing(spacing);
                // does the layout allow the new alignment?
                if (align == LYX_ALIGN_LAYOUT)
                        align = textclasslist
@@ -1673,7 +1727,7 @@ void LyXText::cutSelection(BufferView * bview, bool doclear, bool realcut)
        // finished. The solution used currently just works, to make it
        // faster we need to be more clever and probably also have more
        // calls to stuffClipboard. (Lgb)
-       bview->stuffClipboard(selectionAsString(bview->buffer()));
+       bview->stuffClipboard(selectionAsString(bview->buffer(), true));
 
        // This doesn't make sense, if there is no selection
        if (!selection.set())
@@ -1752,7 +1806,7 @@ void LyXText::copySelection(BufferView * bview)
        // finished. The solution used currently just works, to make it
        // faster we need to be more clever and probably also have more
        // calls to stuffClipboard. (Lgb)
-       bview->stuffClipboard(selectionAsString(bview->buffer()));
+       bview->stuffClipboard(selectionAsString(bview->buffer(), true));
 
        // this doesnt make sense, if there is no selection
        if (!selection.set())
@@ -1785,8 +1839,8 @@ void LyXText::pasteSelection(BufferView * bview)
 
        Paragraph * endpar;
        Paragraph * actpar = cursor.par();
-
        int pos = cursor.pos();
+
        CutAndPaste::pasteSelection(&actpar, &endpar, pos,
                                    bview->buffer()->params.textclass);
     
@@ -1795,9 +1849,7 @@ void LyXText::pasteSelection(BufferView * bview)
        setCursor(bview, cursor.par(), cursor.pos());
        clearSelection();
    
-       selection.cursor = cursor;
        setCursor(bview, actpar, pos);
-       setSelection(bview);
        updateCounters(bview, cursor.row());
 }
 
@@ -2152,8 +2204,8 @@ void LyXText::setCursorIntern(BufferView * bview, Paragraph * par,
                        // and open and lock the inset (bla bla bla)
                        // stuff I don't know... so can you have a look?
                        // (Lgb)
-                       // I moved the lyxerr stuff in here so we can see if this
-                       // is actually really needed and where!
+                       // I moved the lyxerr stuff in here so we can see if
+                       // this is actually really needed and where!
                        // (Jug)
                        it->getLyXText(bview)->setCursorIntern(bview, par, pos, setfont,
                                                               boundary);