]> git.lyx.org Git - lyx.git/blobdiff - src/insets/InsetText.cpp
Cocoa based Qt-4.6 needs to paint every character separately to match metrics computa...
[lyx.git] / src / insets / InsetText.cpp
index 327440d37c2119cb40e207440e4d076f5fa1eeb2..77131a055b4a2e27c8913ded9c8777acddffdb7b 100644 (file)
@@ -99,6 +99,26 @@ void InsetText::setBuffer(Buffer & buf)
 }
 
 
+void InsetText::setMacrocontextPositionRecursive(DocIterator const & pos)
+{
+       text_.setMacrocontextPosition(pos);
+
+       ParagraphList::const_iterator pit = paragraphs().begin();
+       ParagraphList::const_iterator pend = paragraphs().end();
+       for (; pit != pend; ++pit) {
+               InsetList::const_iterator iit = pit->insetList().begin();
+               InsetList::const_iterator end = pit->insetList().end();
+               for (; iit != end; ++iit) {
+                       if (InsetText * txt = iit->inset->asInsetText()) {
+                               DocIterator ppos(pos);
+                               ppos.push_back(CursorSlice(*txt));
+                               iit->inset->asInsetText()->setMacrocontextPositionRecursive(ppos);
+                       }
+               }
+       }
+}
+
+
 void InsetText::clear()
 {
        ParagraphList & pars = paragraphs();
@@ -331,10 +351,10 @@ void InsetText::fixParagraphsFont()
        ParagraphList::iterator par = paragraphs().begin();
        ParagraphList::iterator const end = paragraphs().end();
        while (par != end) {
-               if (par->isPassThru()) {
+               if (par->isPassThru())
                        par->resetFonts(font);
+               if (!par->allowParagraphCustomization())
                        par->params().clear();
-               }
                ++par;
        }
 }
@@ -391,6 +411,9 @@ void InsetText::latex(otexstream & os, OutputParams const & runparams) const
                            os << breakln;
                        else
                            os << safebreakln;
+                       if (runparams.lastid != -1)
+                               os.texrow().start(runparams.lastid,
+                                                 runparams.lastpos);
                        os << "\\begin{" << from_utf8(il.latexname()) << "}\n";
                        if (!il.latexparam().empty())
                                os << from_utf8(il.latexparam());
@@ -487,9 +510,15 @@ docstring InsetText::xhtml(XHTMLStream & xs, OutputParams const & runparams) con
 // if so, try to close fonts, etc. 
 // There are probably limits to how well we can do here, though, and we will
 // have to rely upon users not putting footnotes inside noun-type insets.
-docstring InsetText::insetAsXHTML(XHTMLStream & xs, OutputParams const & runparams,
+docstring InsetText::insetAsXHTML(XHTMLStream & xs, OutputParams const & rp,
                                   XHTMLOptions opts) const
 {
+       // we will always want to output all our paragraphs when we are
+       // called this way.
+       OutputParams runparams = rp;
+       runparams.par_begin = 0;
+       runparams.par_end = text().paragraphs().size();
+       
        if (undefined()) {
                xhtmlParagraphs(text_, buffer(), xs, runparams);
                return docstring();