+2003-12-03 André Pönitz <poenitz@gmx.net>
+
+ * PosIterator.C:
+ * iterators.C:
+ * lyxtext.h:
+ * output_latex.C:
+ * paragraph_funcs.C:
+ * text.C:
+ * text2.C: use Inset::getText instead of Inset::getParagraph
+
2003-12-03 André Pönitz <poenitz@gmx.net>
* buffer.[Ch]:
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;
}
}
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;
{
PosIterator p = cur;
int count = 0;
- for (; p != end; ++p, ++count);
+ for (; p != end; ++p, ++count)
+ ;
return count;
}
+
+2003-12-03 André Pönitz <poenitz@gmx.net>
+
+ * inset.h: remove getParagraphs()
+
+ * insetcollapsable.[Ch]:
+ * insetert.[Ch]:
+ * insetnote.[Ch]:
+ * insettabular.[Ch]:
+ * insettext.C: use getText() instead of getParagraphs()
+
2003-12-03 Martin Vermeer <martin.vermeer@hut.fi>
* insetert.C: fix label text updating bug
class FuncRequest;
class OutputParams;
class LyXCursor;
-class LyXFont;
class LyXLex;
class LyXText;
class Painter;
/// 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; }
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() {}
}
-ParagraphList * InsetCollapsable::getParagraphs(int i) const
-{
- return inset.getParagraphs(i);
-}
-
-
int InsetCollapsable::numParagraphs() const
{
return inset.numParagraphs();
///
void scroll(BufferView *bv, int offset) const;
///
- ParagraphList * getParagraphs(int) const;
- ///
int numParagraphs() const;
///
LyXText * getText(int) const;
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();
}
{
BufferView * bv = cmd.view();
- if (inset.paragraphs().begin()->empty())
- setLatexFont(bv);
-
switch (cmd.action) {
case LFUN_INSET_MODIFY: {
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);
}
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;
}
void init();
///
void setButtonLabel() const;
- ///
- void setLatexFont(BufferView *);
/// update status on button
void updateStatus(bool = false) const;
///
}
-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);
class InsetNote : public InsetCollapsable {
public:
///
-
-
InsetNote(BufferParams const &, std::string const &);
/// Copy constructor
InsetNote(InsetNote const &);
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;
///
}
-ParagraphList * InsetTabular::getParagraphs(int i) const
-{
- return i < tabular.getNumberOfCells()
- ? tabular.getCellInset(i).getParagraphs(0)
- : 0;
-}
-
-
int InsetTabular::numParagraphs() const
{
return tabular.getNumberOfCells();
/// 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;
///
LyXText * getText(int) const;
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;
}
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);
{
lyxerr << "InsetText::edit xy" << endl;
old_par = -1;
+
sanitizeEmptyText(bv);
text_.setCursorFromCoordinates(x - text_.xo_, y + bv->top_y()
- text_.yo_);
}
-ParagraphList * InsetText::getParagraphs(int i) const
-{
- return (i == 0) ? const_cast<ParagraphList*>(¶graphs()) : 0;
-}
-
-
LyXText * InsetText::getText(int i) const
{
return (i == 0) ? const_cast<LyXText*>(&text_) : 0;
}
-void InsetText::getDrawFont(LyXFont & font) const
-{
- if (owner())
- owner()->getDrawFont(font);
-}
-
-
void InsetText::appendParagraphs(Buffer * buffer, ParagraphList & plist)
{
#warning FIXME Check if Changes stuff needs changing here. (Lgb)
#include "updatableinset.h"
#include "ParagraphList_fwd.h"
#include "RowList_fwd.h"
+#include "lyxfont.h"
#include "lyxtext.h"
#include "support/types.h"
UpdatableInset::scroll(bv, offset);
}
///
- ParagraphList * getParagraphs(int) const;
- ///
LyXText * getText(int) const;
/// mark as erased for change tracking
*/
void markNew(bool track_changes = false);
- ///
- void getDrawFont(LyXFont &) const;
/// append text onto the existing text
void appendParagraphs(Buffer * bp, ParagraphList &);
public:
///
mutable LyXText text_;
+ ///
+ mutable LyXFont font_;
};
#endif
// 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;
+ }
}
}
// 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;
+ }
}
}
mutable int xo_;
mutable int yo_;
+ /// our 'outermost' Font
+ LyXFont font_;
+
private:
/// rebreaks the given par
return ++pit;
}
-} //anon namespace
+} // anon namespace
//
// LaTeX all paragraphs from par to endpar, if endpar == 0 then to the end
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();
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();
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;
// 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
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()));