We can access the paragraphs given the LyXText. No need to have two
functions doing the same.

Furthermore, cache an insets' favourite font instead of using owner()
backpointerage.

Andre'

-- 
Those who desire to give up Freedom in order to gain Security, will not have,
nor do they deserve, either one.     (T. Jefferson or B. Franklin or both...)
? .iterators.C.swp
? .lyxlayout.C.swp
? 1.diff
? bugs.diff
? insets/2
Index: PosIterator.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/PosIterator.C,v
retrieving revision 1.4
diff -u -p -r1.4 PosIterator.C
--- PosIterator.C       7 Nov 2003 09:40:48 -0000       1.4
+++ PosIterator.C       3 Dec 2003 17:58:55 -0000
@@ -33,12 +33,11 @@ PosIterator & PosIterator::operator++()
                PosIteratorItem & p = stack_.back();
                
                if (p.pos < p.pit->size()) {
-                       InsetOld * inset = p.pit->getInset(p.pos);
-                       if (inset) {
-                               ParagraphList * pl = inset->getParagraphs(p.index);
-                               if (pl) {
+                       if (InsetOld * inset = p.pit->getInset(p.pos)) {
+                               if (LyXText * text = inset->getText(p.index)) {
+                                       ParagraphList & pl = text->paragraphs();
                                        p.index++;
-                                       stack_.push_back(PosIteratorItem(pl, 
pl->begin(), 0));
+                                       stack_.push_back(PosIteratorItem(&pl, 
pl.begin(), 0));
                                        return *this;
                                }
                        }
@@ -86,10 +85,10 @@ PosIterator & PosIterator::operator--()
        if (q.pos < q.pit->size()) {
                InsetOld * inset = q.pit->getInset(q.pos);
                if (inset && q.index > 0) {
-                       ParagraphList *
-                               pl = inset->getParagraphs(q.index - 1);
-                       BOOST_ASSERT(pl);
-                       stack_.push_back(PosIteratorItem(pl, prior(pl->end()), 
pl->back().size()));
+                       LyXText * text = inset->getText(q.index - 1);
+                       BOOST_ASSERT(text);
+                       ParagraphList & pl = text->paragraphs();
+                       stack_.push_back(PosIteratorItem(&pl, prior(pl.end()), 
pl.back().size()));
                }
        }
        return *this;
@@ -156,7 +155,8 @@ int distance(PosIterator const & cur, Po
 {
        PosIterator p = cur;
        int count = 0;
-       for (; p != end; ++p, ++count);
+       for (; p != end; ++p, ++count)
+               ;
        return count;
 }
 
Index: iterators.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/iterators.C,v
retrieving revision 1.34
diff -u -p -r1.34 iterators.C
--- iterators.C 1 Dec 2003 13:35:38 -0000       1.34
+++ iterators.C 3 Dec 2003 17:58:55 -0000
@@ -110,26 +110,31 @@ ParIterator & ParIterator::operator++()
                // Does the current inset contain more "cells" ?
                if (p.index) {
                        ++(*p.index);
-                       ParagraphList * plist = 
(*p.it)->inset->getParagraphs(*p.index);
-                       if (plist && !plist->empty()) {
-                               
pimpl_->positions.push_back(ParPosition(plist->begin(), *plist));
-                               return *this;
+                       if (LyXText * text = (*p.it)->inset->getText(*p.index)) {
+                               ParagraphList & plist = text->paragraphs();
+                               if (!plist.empty()) {
+                                       
pimpl_->positions.push_back(ParPosition(plist.begin(), plist));
+                                       return *this;
+                               }
                        }
                        ++(*p.it);
-               } else
+               } else {
                        // The following line is needed because the value of
                        // p.it may be invalid if inset was added/removed to
                        // the paragraph pointed by the iterator
                        p.it.reset(p.pit->insetlist.begin());
+               }
 
                // Try to find the next inset that contains paragraphs
                InsetList::iterator end = p.pit->insetlist.end();
                for (; *p.it != end; ++(*p.it)) {
-                       ParagraphList * plist = (*p.it)->inset->getParagraphs(0);
-                       if (plist && !plist->empty()) {
-                               p.index.reset(0);
-                               
pimpl_->positions.push_back(ParPosition(plist->begin(), *plist));
-                               return *this;
+                       if (LyXText * text = (*p.it)->inset->getText(0)) {
+                               ParagraphList & plist = text->paragraphs();
+                               if (!plist.empty()) {
+                                       p.index.reset(0);
+                                       
pimpl_->positions.push_back(ParPosition(plist.begin(), plist));
+                                       return *this;
+                               }
                        }
                }
 
@@ -265,26 +270,31 @@ ParConstIterator & ParConstIterator::ope
                // Does the current inset contain more "cells" ?
                if (p.index) {
                        ++(*p.index);
-                       ParagraphList * plist = 
(*p.it)->inset->getParagraphs(*p.index);
-                       if (plist && !plist->empty()) {
-                               
pimpl_->positions.push_back(ParPosition(plist->begin(), *plist));
-                               return *this;
+                       if (LyXText * text = (*p.it)->inset->getText(*p.index)) {
+                               ParagraphList & plist = text->paragraphs();
+                               if (!plist.empty()) {
+                                       
pimpl_->positions.push_back(ParPosition(plist.begin(), plist));
+                                       return *this;
+                               }
                        }
                        ++(*p.it);
-               } else
+               } else {
                        // The following line is needed because the value of
                        // p.it may be invalid if inset was added/removed to
                        // the paragraph pointed by the iterator
                        p.it.reset(p.pit->insetlist.begin());
+               }
 
                // Try to find the next inset that contains paragraphs
                InsetList::iterator end = p.pit->insetlist.end();
                for (; *p.it != end; ++(*p.it)) {
-                       ParagraphList * plist = (*p.it)->inset->getParagraphs(0);
-                       if (plist && !plist->empty()) {
-                               p.index.reset(0);
-                               
pimpl_->positions.push_back(ParPosition(plist->begin(), *plist));
-                               return *this;
+                       if (LyXText * text = (*p.it)->inset->getText(*p.index)) {
+                               ParagraphList & plist = text->paragraphs();
+                               if (!plist.empty()) {
+                                       p.index.reset(0);
+                                       
pimpl_->positions.push_back(ParPosition(plist.begin(), plist));
+                                       return *this;
+                               }
                        }
                }
 
Index: lyxtext.h
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/lyxtext.h,v
retrieving revision 1.267
diff -u -p -r1.267 lyxtext.h
--- lyxtext.h   3 Dec 2003 15:27:14 -0000       1.267
+++ lyxtext.h   3 Dec 2003 17:58:55 -0000
@@ -426,6 +426,9 @@ public:
        mutable int xo_;
        mutable int yo_;
 
+       /// our 'outermost' Font
+       LyXFont font_;
+
 
 private:
        /// rebreaks the given par
Index: output_latex.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/output_latex.C,v
retrieving revision 1.3
diff -u -p -r1.3 output_latex.C
--- output_latex.C      28 Nov 2003 15:53:24 -0000      1.3
+++ output_latex.C      3 Dec 2003 17:58:55 -0000
@@ -426,7 +426,7 @@ TeXOnePar(Buffer const & buf,
        return ++pit;
 }
 
-} //anon namespace
+} // anon namespace
 
 //
 // LaTeX all paragraphs from par to endpar, if endpar == 0 then to the end
Index: paragraph_funcs.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/paragraph_funcs.C,v
retrieving revision 1.91
diff -u -p -r1.91 paragraph_funcs.C
--- paragraph_funcs.C   3 Dec 2003 15:27:15 -0000       1.91
+++ paragraph_funcs.C   3 Dec 2003 17:58:55 -0000
@@ -564,11 +564,10 @@ ParagraphList::iterator outerPar(Buffer 
        ParIterator pit = const_cast<Buffer &>(buf).par_iterator_begin();
        ParIterator end = const_cast<Buffer &>(buf).par_iterator_end();
        for ( ; pit != end; ++pit) {
-
-               ParagraphList * plist;
+               LyXText * text;
                // the second '=' below is intentional
-               for (int i = 0; (plist = inset->getParagraphs(i)); ++i)
-                       if (plist == &pit.plist())
+               for (int i = 0; (text = inset->getText(i)); ++i)
+                       if (&text->paragraphs() == &pit.plist())
                                return pit.outerPar();
 
                InsetList::iterator ii = pit->insetlist.begin();
@@ -588,10 +587,10 @@ Paragraph const & ownerPar(Buffer const 
        ParConstIterator pit = buf.par_iterator_begin();
        ParConstIterator end = buf.par_iterator_end();
        for ( ; pit != end; ++pit) {
-               ParagraphList * plist;
+               LyXText * text;
                // the second '=' below is intentional
-               for (int i = 0; (plist = inset->getParagraphs(i)); ++i)
-                       if (plist == &pit.plist())
+               for (int i = 0; (text = inset->getText(i)); ++i)
+                       if (&text->paragraphs() == &pit.plist())
                                return *pit.pit();
 
                InsetList::const_iterator ii = pit->insetlist.begin();
Index: text.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/text.C,v
retrieving revision 1.507
diff -u -p -r1.507 text.C
--- text.C      3 Dec 2003 15:27:15 -0000       1.507
+++ text.C      3 Dec 2003 17:58:57 -0000
@@ -314,25 +314,25 @@ int LyXText::leftMargin(ParagraphList::i
                align = pit->params().align();
 
        // set the correct parindent
-       if (pos == 0) {
-               if ((layout->labeltype == LABEL_NO_LABEL
-                    || layout->labeltype == LABEL_TOP_ENVIRONMENT
-                    || layout->labeltype == LABEL_CENTERED_TOP_ENVIRONMENT
-                    || (layout->labeltype == LABEL_STATIC
-                        && layout->latextype == LATEX_ENVIRONMENT
-                        && !isFirstInSequence(pit, paragraphs())))
-                   && align == LYX_ALIGN_BLOCK
-                   && !pit->params().noindent()
-                       // in tabulars and ert paragraphs are never indented!
-                       && (!pit->inInset() || !pit->inInset()->owner() ||
-                               (pit->inInset()->owner()->lyxCode() != 
InsetOld::TABULAR_CODE &&
-                                pit->inInset()->owner()->lyxCode() != 
InsetOld::ERT_CODE))
-                   && (pit->layout() != tclass.defaultLayout() ||
-                       bv()->buffer()->params().paragraph_separation ==
-                       BufferParams::PARSEP_INDENT)) {
-                       x += font_metrics::signedWidth(parindent,
-                                                 tclass.defaultfont());
-               }
+       if (pos == 0
+           && (layout->labeltype == LABEL_NO_LABEL
+              || layout->labeltype == LABEL_TOP_ENVIRONMENT
+              || layout->labeltype == LABEL_CENTERED_TOP_ENVIRONMENT
+              || (layout->labeltype == LABEL_STATIC
+                  && layout->latextype == LATEX_ENVIRONMENT
+                  && !isFirstInSequence(pit, paragraphs())))
+           && align == LYX_ALIGN_BLOCK
+           && !pit->params().noindent()
+           // in tabulars and ert paragraphs are never indented!
+           && (!pit->inInset()
+               || !pit->inInset()->owner()
+               || (pit->inInset()->owner()->lyxCode() != InsetOld::TABULAR_CODE
+                   && pit->inInset()->owner()->lyxCode() != InsetOld::ERT_CODE))
+           && (pit->layout() != tclass.defaultLayout()
+               || bv()->buffer()->params().paragraph_separation ==
+                  BufferParams::PARSEP_INDENT))
+       {
+               x += font_metrics::signedWidth(parindent, tclass.defaultfont());
        }
 
        return x;
Index: text2.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/text2.C,v
retrieving revision 1.517
diff -u -p -r1.517 text2.C
--- text2.C     1 Dec 2003 13:35:43 -0000       1.517
+++ text2.C     3 Dec 2003 17:58:57 -0000
@@ -118,8 +118,8 @@ LyXFont LyXText::getFont(ParagraphList::
        // We specialize the 95% common case:
        if (!pit->getDepth()) {
                LyXFont f = pit->getFontSettings(params, pos);
-               if (pit->inInset())
-                       pit->inInset()->getDrawFont(f);
+               if (in_inset_)
+                       f.realize(font_);
                if (layout->labeltype == LABEL_MANUAL && pos < body_pos)
                        return f.realize(layout->reslabelfont);
                else
@@ -136,8 +136,8 @@ LyXFont LyXText::getFont(ParagraphList::
        LyXFont font = pit->getFontSettings(params, pos);
        font.realize(layoutfont);
 
-       if (pit->inInset())
-               pit->inInset()->getDrawFont(font);
+       if (in_inset_)
+               font.realize(font_);
 
        // Realize with the fonts of lesser depth.
        //font.realize(outerFont(pit, paragraphs()));
Index: insets/inset.h
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/insets/inset.h,v
retrieving revision 1.148
diff -u -p -r1.148 inset.h
--- insets/inset.h      2 Dec 2003 07:15:42 -0000       1.148
+++ insets/inset.h      3 Dec 2003 17:58:57 -0000
@@ -25,7 +25,6 @@ class LColor_color;
 class FuncRequest;
 class OutputParams;
 class LyXCursor;
-class LyXFont;
 class LyXLex;
 class LyXText;
 class Painter;
@@ -223,10 +222,7 @@ public:
        /// returns the actual scroll-value
        virtual int scroll(bool recursive = true) const;
 
-       /// if this insets owns paragraphs (f.ex. InsetText) then it
-       /// should return it's very first one!
-       virtual ParagraphList * getParagraphs(int /*num*/) const { return 0; }
-       ///
+       /// if this insets owns text cells (e.g. InsetText) return cell num
        virtual LyXText * getText(int /*num*/) const { return 0; }
        ///
        virtual int numParagraphs() const { return 0; }
@@ -256,8 +252,6 @@ public:
            be closed before generating this inset. This is needed for
            insets that may contain several paragraphs */
        virtual bool noFontChange() const { return false; }
-       //
-       virtual void getDrawFont(LyXFont &) const {}
 
        /// mark the inset contents as erased (for change tracking)
        virtual void markErased() {}
Index: insets/insetcollapsable.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/insets/insetcollapsable.C,v
retrieving revision 1.220
diff -u -p -r1.220 insetcollapsable.C
--- insets/insetcollapsable.C   2 Dec 2003 12:39:13 -0000       1.220
+++ insets/insetcollapsable.C   3 Dec 2003 17:58:57 -0000
@@ -375,12 +375,6 @@ int InsetCollapsable::scroll(bool recurs
 }
 
 
-ParagraphList * InsetCollapsable::getParagraphs(int i) const
-{
-       return inset.getParagraphs(i);
-}
-
-
 int InsetCollapsable::numParagraphs() const
 {
        return inset.numParagraphs();
Index: insets/insetcollapsable.h
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/insets/insetcollapsable.h,v
retrieving revision 1.155
diff -u -p -r1.155 insetcollapsable.h
--- insets/insetcollapsable.h   2 Dec 2003 07:15:42 -0000       1.155
+++ insets/insetcollapsable.h   3 Dec 2003 17:58:57 -0000
@@ -99,8 +99,6 @@ public:
        ///
        void scroll(BufferView *bv, int offset) const;
        ///
-       ParagraphList * getParagraphs(int) const;
-       ///
        int numParagraphs() const;
        ///
        LyXText * getText(int) const;
Index: insets/insetert.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/insets/insetert.C,v
retrieving revision 1.179
diff -u -p -r1.179 insetert.C
--- insets/insetert.C   2 Dec 2003 07:15:42 -0000       1.179
+++ insets/insetert.C   3 Dec 2003 17:58:57 -0000
@@ -384,12 +384,10 @@ int InsetERT::docbook(Buffer const &, os
 
 void InsetERT::edit(BufferView * bv, bool left)
 {
-       if (status_ == Inlined) {
+       if (status_ == Inlined)
                inset.edit(bv, left);
-       } else {
+       else
                InsetCollapsable::edit(bv, left);
-       }
-       setLatexFont(bv);
        updateStatus();
 }
 
@@ -399,9 +397,6 @@ InsetERT::priv_dispatch(FuncRequest cons
 {
        BufferView * bv = cmd.view();
 
-       if (inset.paragraphs().begin()->empty())
-               setLatexFont(bv);
-
        switch (cmd.action) {
 
        case LFUN_INSET_MODIFY: {
@@ -426,17 +421,6 @@ InsetERT::priv_dispatch(FuncRequest cons
                bv->owner()->setLayout(inset.paragraphs().begin()->layout()->name());
                return DispatchResult(true);
 
-       case LFUN_BREAKPARAGRAPH:
-       case LFUN_BREAKPARAGRAPHKEEPLAYOUT:
-       case LFUN_BACKSPACE:
-       case LFUN_BACKSPACE_SKIP:
-       case LFUN_DELETE:
-       case LFUN_DELETE_SKIP:
-       case LFUN_DELETE_LINE_FORWARD:
-       case LFUN_CUT:
-               setLatexFont(bv);
-               return InsetCollapsable::priv_dispatch(cmd, idx, pos);
-
        default:
                return InsetCollapsable::priv_dispatch(cmd, idx, pos);
        }
@@ -457,25 +441,20 @@ bool InsetERT::insetAllowed(InsetOld::Co
 
 void InsetERT::metrics(MetricsInfo & mi, Dimension & dim) const
 {
+       LyXFont tmpfont = mi.base.font;
+       getDrawFont(mi.base.font);
        InsetCollapsable::metrics(mi, dim);
+       mi.base.font = tmpfont;
        dim_ = dim;
 }
 
 
 void InsetERT::draw(PainterInfo & pi, int x, int y) const
 {
+       LyXFont tmpfont = pi.base.font;
+       getDrawFont(pi.base.font);
        InsetCollapsable::draw(pi, x, y);
-}
-
-
-void InsetERT::setLatexFont(BufferView * /*bv*/)
-{
-#ifdef SET_HARD_FONT
-       LyXFont font(LyXFont::ALL_INHERIT, latex_language);
-       font.setFamily(LyXFont::TYPEWRITER_FAMILY);
-       font.setColor(LColor::latex);
-       inset.text_.setFont(bv, font, false);
-#endif
+       pi.base.font = tmpfont;
 }
 
 
Index: insets/insetert.h
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/insets/insetert.h,v
retrieving revision 1.99
diff -u -p -r1.99 insetert.h
--- insets/insetert.h   2 Dec 2003 07:15:42 -0000       1.99
+++ insets/insetert.h   3 Dec 2003 17:58:57 -0000
@@ -98,8 +98,6 @@ private:
        void init();
        ///
        void setButtonLabel() const;
-       ///
-       void setLatexFont(BufferView *);
        /// update status on button
        void updateStatus(bool = false) const;
        ///
Index: insets/insetnote.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/insets/insetnote.C,v
retrieving revision 1.65
diff -u -p -r1.65 insetnote.C
--- insets/insetnote.C  10 Nov 2003 13:23:12 -0000      1.65
+++ insets/insetnote.C  3 Dec 2003 17:58:57 -0000
@@ -111,18 +111,6 @@ void InsetNote::setButtonLabel()
 }
 
 
-void InsetNote::metrics(MetricsInfo & mi, Dimension & dim) const
-{
-       InsetCollapsable::metrics(mi, dim);
-       // Contrary to Greyedout, these cannot be construed as part of the
-       // running text: make them stand on their own
-       if (params_.type == "Note" || params_.type == "Comment")
-               if (isOpen())
-                       dim.wid = mi.base.textwidth;
-       dim_ = dim;
-}
-
-
 bool InsetNote::showInsetDialog(BufferView * bv) const
 {
        InsetNoteMailer("note", const_cast<InsetNote &>(*this)).showDialog(bv);
Index: insets/insetnote.h
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/insets/insetnote.h,v
retrieving revision 1.37
diff -u -p -r1.37 insetnote.h
--- insets/insetnote.h  5 Nov 2003 12:06:16 -0000       1.37
+++ insets/insetnote.h  3 Dec 2003 17:58:57 -0000
@@ -31,8 +31,6 @@ struct InsetNoteParams {
 class InsetNote : public InsetCollapsable {
 public:
        ///
-
-
        InsetNote(BufferParams const &, std::string const &);
        /// Copy constructor
        InsetNote(InsetNote const &);
@@ -50,22 +48,20 @@ public:
        void read(Buffer const & buf, LyXLex & lex);
        ///
        void setButtonLabel();
-       ///
-       void metrics(MetricsInfo &, Dimension &) const;
        /// show the note dialog
        bool showInsetDialog(BufferView * bv) const;
        ///
        int latex(Buffer const &, std::ostream &,
-                 OutputParams const &) const;
+              OutputParams const &) const;
        ///
        int linuxdoc(Buffer const &, std::ostream &,
-                    OutputParams const &) const;
+              OutputParams const &) const;
        ///
        int docbook(Buffer const &, std::ostream &,
-                   OutputParams const &) const;
+              OutputParams const &) const;
        ///
        int plaintext(Buffer const &, std::ostream &,
-                 OutputParams const &) const;
+              OutputParams const &) const;
        ///
        void validate(LaTeXFeatures &) const;
        ///
Index: insets/insettabular.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/insets/insettabular.C,v
retrieving revision 1.383
diff -u -p -r1.383 insettabular.C
--- insets/insettabular.C       1 Dec 2003 13:35:45 -0000       1.383
+++ insets/insettabular.C       3 Dec 2003 17:58:57 -0000
@@ -1965,14 +1965,6 @@ void InsetTabular::getSelection(int & sr
 }
 
 
-ParagraphList * InsetTabular::getParagraphs(int i) const
-{
-       return i < tabular.getNumberOfCells()
-               ? tabular.getCellInset(i).getParagraphs(0)
-               : 0;
-}
-
-
 int InsetTabular::numParagraphs() const
 {
        return tabular.getNumberOfCells();
Index: insets/insettabular.h
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/insets/insettabular.h,v
retrieving revision 1.171
diff -u -p -r1.171 insettabular.h
--- insets/insettabular.h       28 Nov 2003 08:55:10 -0000      1.171
+++ insets/insettabular.h       3 Dec 2003 17:58:57 -0000
@@ -125,17 +125,15 @@ public:
        /// Appends \c list with all labels found within this inset.
        void getLabelList(Buffer const &, std::vector<std::string> & list) const;
        ///
-       int scroll(bool recursive=true) const;
+       int scroll(bool recursive = true) const;
        ///
-       void scroll(BufferView *bv, float sx) const {
+       void scroll(BufferView * bv, float sx) const {
                UpdatableInset::scroll(bv, sx);
        }
        ///
-       void scroll(BufferView *bv, int offset) const {
+       void scroll(BufferView * bv, int offset) const {
                UpdatableInset::scroll(bv, offset);
        }
-       ///
-       ParagraphList * getParagraphs(int) const;
        ///
        int numParagraphs() const;
        ///
Index: insets/insettext.C
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/insets/insettext.C,v
retrieving revision 1.559
diff -u -p -r1.559 insettext.C
--- insets/insettext.C  3 Dec 2003 15:27:16 -0000       1.559
+++ insets/insettext.C  3 Dec 2003 17:58:57 -0000
@@ -176,14 +176,16 @@ void InsetText::read(Buffer const & buf,
 void InsetText::metrics(MetricsInfo & mi, Dimension & dim) const
 {
        //lyxerr << "InsetText::metrics: width: " << mi.base.textwidth << endl;
-       mi.base.textwidth -= 2 * TEXT_TO_INSET_OFFSET;
        setViewCache(mi.base.bv);
+       mi.base.textwidth -= 2 * TEXT_TO_INSET_OFFSET;
        text_.metrics(mi, dim);
        dim.asc += TEXT_TO_INSET_OFFSET;
        dim.des += TEXT_TO_INSET_OFFSET;
        dim.wid += 2 * TEXT_TO_INSET_OFFSET;
        mi.base.textwidth += 2 * TEXT_TO_INSET_OFFSET;
        dim_ = dim;
+       font_ = mi.base.font;
+       text_.font_ = mi.base.font;
 }
 
 
@@ -270,9 +272,8 @@ extern LCursor theTempCursor;
 void InsetText::edit(BufferView * bv, bool left)
 {
        lyxerr << "InsetText: edit left/right" << endl;
-       setViewCache(bv);
-
        old_par = -1;
+       setViewCache(bv);
 
        if (left)
                text_.setCursorIntern(0, 0);
@@ -289,6 +290,7 @@ void InsetText::edit(BufferView * bv, in
 {
        lyxerr << "InsetText::edit xy" << endl;
        old_par = -1;
+
        sanitizeEmptyText(bv);
        text_.setCursorFromCoordinates(x - text_.xo_, y + bv->top_y()
                                       - text_.yo_);
@@ -534,12 +536,6 @@ void InsetText::clearInset(Painter & pai
 }
 
 
-ParagraphList * InsetText::getParagraphs(int i) const
-{
-       return (i == 0) ? const_cast<ParagraphList*>(&paragraphs()) : 0;
-}
-
-
 LyXText * InsetText::getText(int i) const
 {
        return (i == 0) ? const_cast<LyXText*>(&text_) : 0;
@@ -574,13 +570,6 @@ void InsetText::collapseParagraphs(Buffe
 
                mergeParagraph(bv->buffer()->params(), paragraphs(), first);
        }
-}
-
-
-void InsetText::getDrawFont(LyXFont & font) const
-{
-       if (owner())
-               owner()->getDrawFont(font);
 }
 
 
Index: insets/insettext.h
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/insets/insettext.h,v
retrieving revision 1.237
diff -u -p -r1.237 insettext.h
--- insets/insettext.h  2 Dec 2003 12:39:14 -0000       1.237
+++ insets/insettext.h  3 Dec 2003 17:58:57 -0000
@@ -15,6 +15,7 @@
 #include "updatableinset.h"
 #include "ParagraphList_fwd.h"
 #include "RowList_fwd.h"
+#include "lyxfont.h"
 #include "lyxtext.h"
 
 #include "support/types.h"
@@ -125,8 +126,6 @@ public:
                UpdatableInset::scroll(bv, offset);
        }
        ///
-       ParagraphList * getParagraphs(int) const;
-       ///
        LyXText * getText(int) const;
 
        /// mark as erased for change tracking
@@ -140,8 +139,6 @@ public:
         */
        void markNew(bool track_changes = false);
 
-       ///
-       void getDrawFont(LyXFont &) const;
        /// append text onto the existing text
        void appendParagraphs(Buffer * bp, ParagraphList &);
 
@@ -199,5 +196,7 @@ private:
 public:
        ///
        mutable LyXText text_;
+       ///
+       mutable LyXFont font_;
 };
 #endif

Reply via email to