/////////////////////////////////////////////////////////////////////
InsetText::InsetText(Buffer * buf, UsePlain type)
- : Inset(buf), drawFrame_(false), frame_color_(Color_insetframe), text_(this)
+ : Inset(buf), drawFrame_(false), frame_color_(Color_insetframe),
+ text_(this, type == DefaultLayout)
{
- initParagraphs(type);
}
InsetText::InsetText(InsetText const & in)
- : Inset(in), text_(this)
+ : Inset(in), text_(this, in.text_)
{
- text_.autoBreakRows_ = in.text_.autoBreakRows_;
drawFrame_ = in.drawFrame_;
frame_color_ = in.frame_color_;
- text_.paragraphs() = in.text_.paragraphs();
- setParagraphOwner();
}
}
-void InsetText::initParagraphs(UsePlain type)
-{
- LASSERT(paragraphs().empty(), /**/);
- paragraphs().push_back(Paragraph());
- Paragraph & ourpar = paragraphs().back();
- ourpar.setInsetOwner(this);
- DocumentClass const & dc = buffer_->params().documentClass();
- if (type == DefaultLayout)
- ourpar.setDefaultLayout(dc);
- else
- ourpar.setPlainLayout(dc);
-}
-
-
-void InsetText::setParagraphOwner()
-{
- for_each(paragraphs().begin(), paragraphs().end(),
- bind(&Paragraph::setInsetOwner, _1, this));
-}
-
-
void InsetText::clear()
{
ParagraphList & pars = paragraphs();
FuncStatus & status) const
{
switch (cmd.action) {
- case LFUN_LAYOUT:
- status.setEnabled(!forcePlainLayout());
- return true;
-
- case LFUN_LAYOUT_PARAGRAPH:
- case LFUN_PARAGRAPH_PARAMS:
- case LFUN_PARAGRAPH_PARAMS_APPLY:
- case LFUN_PARAGRAPH_UPDATE:
- status.setEnabled(allowParagraphCustomization());
- return true;
-
case LFUN_INSET_DISSOLVE: {
bool const main_inset = &buffer().inset() == this;
bool const target_inset = cmd.argument().empty()
InsetLayout const & il = getLayout();
if (opts & WriteOuterTag)
- xs << StartTag(il.htmltag(), il.htmlattr());
+ xs << html::StartTag(il.htmltag(), il.htmlattr());
if ((opts & WriteLabel) && !il.counter().empty()) {
BufferParams const & bp = buffer().masterBuffer()->params();
Counters & cntrs = bp.documentClass().counters();
- cntrs.step(il.counter());
+ cntrs.step(il.counter(), OutputUpdate);
// FIXME: translate to paragraph language
if (!il.htmllabel().empty()) {
docstring const lbl =
cntrs.counterLabel(from_utf8(il.htmllabel()), bp.language->code());
// FIXME is this check necessary?
if (!lbl.empty()) {
- xs << StartTag(il.htmllabeltag(), il.htmllabelattr());
+ xs << html::StartTag(il.htmllabeltag(), il.htmllabelattr());
xs << lbl;
- xs << EndTag(il.htmllabeltag());
+ xs << html::EndTag(il.htmllabeltag());
}
}
}
if (opts & WriteInnerTag)
- xs << StartTag(il.htmlinnertag(), il.htmlinnerattr());
- if (il.isMultiPar())
- xhtmlParagraphs(text_, buffer(), xs, runparams);
- else {
- OutputParams ours = runparams;
+ xs << html::StartTag(il.htmlinnertag(), il.htmlinnerattr());
+ OutputParams ours = runparams;
+ if (!il.isMultiPar() || opts == JustText)
ours.html_make_pars = false;
- xhtmlParagraphs(text_, buffer(), xs, ours);
- }
+ xhtmlParagraphs(text_, buffer(), xs, ours);
if (opts & WriteInnerTag)
- xs << EndTag(il.htmlinnertag());
+ xs << html::EndTag(il.htmlinnertag());
if (opts & WriteOuterTag)
- xs << EndTag(il.htmltag());
+ xs << html::EndTag(il.htmltag());
return docstring();
}
}
-bool InsetText::showInsetDialog(BufferView *) const
-{
- return false;
-}
-
-
void InsetText::setText(docstring const & data, Font const & font, bool trackChanges)
{
clear();
}
-void InsetText::updateLabels(ParIterator const & it)
+void InsetText::updateBuffer(ParIterator const & it, UpdateType utype)
{
ParIterator it2 = it;
it2.forwardPos();
LASSERT(&it2.inset() == this && it2.pit() == 0, return);
- if (producesOutput())
- buffer().updateLabels(it2);
- else {
+ if (producesOutput()) {
+ InsetLayout const & il = getLayout();
+ bool const save_layouts = utype == OutputUpdate && il.htmlisblock();
+ Counters & cnt = buffer().masterBuffer()->params().documentClass().counters();
+ if (save_layouts) {
+ // LYXERR0("Entering " << name());
+ cnt.clearLastLayout();
+ // FIXME cnt.saveLastCounter()?
+ }
+ buffer().updateBuffer(it2, utype);
+ if (save_layouts) {
+ // LYXERR0("Exiting " << name());
+ cnt.restoreLastLayout();
+ // FIXME cnt.restoreLastCounter()?
+ }
+ } else {
DocumentClass const & tclass = buffer().masterBuffer()->params().documentClass();
+ // Note that we do not need to call:
+ // tclass.counters().clearLastLayout()
+ // since we are saving and restoring the existing counters, etc.
Counters const savecnt = tclass.counters();
- buffer().updateLabels(it2);
+ buffer().updateBuffer(it2, utype);
tclass.counters() = savecnt;
}
}