InsetCollapsable::CollapseStatus InsetCollapsable::status() const
{
- if (decoration() == InsetLayout::Conglomerate)
+ if (decoration() == InsetLayout::CONGLOMERATE)
return status_;
return autoOpen_ ? Open : status_;
}
InsetCollapsable::Geometry InsetCollapsable::geometry() const
{
switch (decoration()) {
- case InsetLayout::Classic:
+ case InsetLayout::CLASSIC:
if (status() == Open)
return openinlined_ ? LeftButton : TopButton;
return ButtonOnly;
- case InsetLayout::Minimalistic:
+ case InsetLayout::MINIMALISTIC:
return status() == Open ? NoButton : ButtonOnly ;
- case InsetLayout::Conglomerate:
+ case InsetLayout::CONGLOMERATE:
return status() == Open ? SubLabel : Corners ;
- case InsetLayout::Default:
+ case InsetLayout::DEFAULT:
break; // this shouldn't happen
}
}
-InsetCollapsable::InsetCollapsable(Buffer const & buf,
- CollapseStatus status)
- : InsetText(buf), status_(status),
+InsetCollapsable::InsetCollapsable(Buffer const & buf)
+ : InsetText(buf), status_(Inset::Open),
openinlined_(false), autoOpen_(false), mouse_hover_(false)
{
DocumentClass const & dc = buf.params().documentClass();
setAutoBreakRows(true);
setDrawFrame(true);
setFrameColor(Color_collapsableframe);
- paragraphs().back().setLayout(dc.plainLayout());
+ paragraphs().back().setLayout(dc.plainLayout());
}
Dimension dim = dimensionCollapsed();
if (geometry() == NoButton)
return translateIfPossible(layout_->labelstring());
- if (x > xo(bv) + dim.wid || y > yo(bv) + dim.des)
+ if (x > xo(bv) + dim.wid || y > yo(bv) + dim.des || isOpen())
return docstring();
- docstring default_tip;
- switch (status_) {
- case Open:
- default_tip = _("Left-click to collapse the inset");
- break;
- case Collapsed:
- default_tip = _("Left-click to open the inset");
- break;
- }
-
OutputParams rp(&buffer().params().encoding());
odocstringstream ods;
InsetText::plaintext(ods, rp);
// shorten it if necessary
if (content_tip.size() > 200)
content_tip = content_tip.substr(0, 200) + "...";
- if (!isOpen() && !content_tip.empty())
- return content_tip + '\n' + default_tip;
- return default_tip;
+ return content_tip;
}
// this must be set before we enter InsetText::read()
setLayout(buffer().params());
-
InsetText::read(lex);
+ // set button label again as the inset contents was not read yet at
+ // setLayout() time.
+ setButtonLabel();
// Force default font, if so requested
// This avoids paragraphs in buffer language that would have a
LASSERT(layout_, /**/);
autoOpen_ = pi.base.bv->cursor().isInside(this);
- ColorCode const old_color = pi.background_color;
- pi.background_color = backgroundColor();
FontInfo tmpfont = pi.base.font;
pi.base.font = layout_->font();
}
break;
}
- pi.background_color = old_color;
pi.base.font = tmpfont;
}
if (hitButton(cmd)) {
switch (cmd.button()) {
case mouse_button::button1:
+ case mouse_button::button3:
// Pass the command to the enclosing InsetText,
// so that the cursor gets set.
cur.undispatched();
break;
case mouse_button::none:
case mouse_button::button2:
- case mouse_button::button3:
case mouse_button::button4:
case mouse_button::button5:
// Nothing to do.
FuncStatus & flag) const
{
switch (cmd.action) {
- // suppress these
+ // FIXME At present, these are being enabled and disabled according to
+ // whether PASSTHRU has been set in the InsetLayout. This makes some
+ // sense, but there are other checks that should really be done. E.g.,
+ // one should not be able to inset IndexPrint inside an optional argument!!
case LFUN_ACCENT_ACUTE:
case LFUN_ACCENT_BREVE:
case LFUN_ACCENT_CARON:
case LFUN_FLOAT_LIST_INSERT:
case LFUN_FLOAT_WIDE_INSERT:
case LFUN_FONT_BOLD:
+ case LFUN_FONT_BOLDSYMBOL:
case LFUN_FONT_TYPEWRITER:
case LFUN_FONT_DEFAULT:
case LFUN_FONT_EMPH:
case LFUN_LABEL_INSERT:
case LFUN_LINE_INSERT:
case LFUN_NEWPAGE_INSERT:
- case LFUN_LAYOUT:
- case LFUN_LAYOUT_PARAGRAPH:
case LFUN_LAYOUT_TABULAR:
case LFUN_MARGINALNOTE_INSERT:
case LFUN_MATH_DISPLAY:
case LFUN_NOTE_INSERT:
case LFUN_NOTE_NEXT:
case LFUN_OPTIONAL_INSERT:
- case LFUN_PARAGRAPH_PARAMS:
- case LFUN_PARAGRAPH_PARAMS_APPLY:
- case LFUN_PARAGRAPH_SPACING:
- case LFUN_PARAGRAPH_UPDATE:
case LFUN_REFERENCE_NEXT:
case LFUN_SERVER_GOTO_FILE_ROW:
case LFUN_SERVER_NOTIFY:
InsetLayout::InsetDecoration InsetCollapsable::decoration() const
{
if (!layout_)
- return InsetLayout::Classic;
+ return InsetLayout::CLASSIC;
InsetLayout::InsetDecoration const dec = layout_->decoration();
switch (dec) {
- case InsetLayout::Classic:
- case InsetLayout::Minimalistic:
- case InsetLayout::Conglomerate:
+ case InsetLayout::CLASSIC:
+ case InsetLayout::MINIMALISTIC:
+ case InsetLayout::CONGLOMERATE:
return dec;
- case InsetLayout::Default:
+ case InsetLayout::DEFAULT:
break;
}
if (lyxCode() == FLEX_CODE)
- return InsetLayout::Conglomerate;
- return InsetLayout::Classic;
+ return InsetLayout::CONGLOMERATE;
+ return InsetLayout::CLASSIC;
}
// collapsable insets should not redefine this, non-standard ones may
// call this.
if (!layout_->latexname().empty()) {
- if (layout_->latextype() == "command") {
+ if (layout_->latextype() == InsetLayout::COMMAND) {
// FIXME UNICODE
if (runparams.moving_arg)
os << "\\protect";
if (!layout_->latexparam().empty())
os << from_utf8(layout_->latexparam());
os << '{';
- } else if (layout_->latextype() == "environment") {
+ } else if (layout_->latextype() == InsetLayout::ENVIRONMENT) {
os << "%\n\\begin{" << from_utf8(layout_->latexname()) << "}\n";
if (!layout_->latexparam().empty())
os << from_utf8(layout_->latexparam());
rp.moving_arg = true;
int i = InsetText::latex(os, rp);
if (!layout_->latexname().empty()) {
- if (layout_->latextype() == "command") {
+ if (layout_->latextype() == InsetLayout::COMMAND) {
os << "}";
- } else if (layout_->latextype() == "environment") {
+ } else if (layout_->latextype() == InsetLayout::ENVIRONMENT) {
os << "\n\\end{" << from_utf8(layout_->latexname()) << "}\n";
i += 4;
}
void InsetCollapsable::validate(LaTeXFeatures & features) const
{
- if (!layout_)
- return;
-
- // Force inclusion of preamble snippet in layout file
- features.require(to_utf8(layout_->name()));
+ string const preamble = getLayout().preamble();
+ if (!preamble.empty())
+ features.addPreambleSnippet(preamble);
+ features.require(getLayout().requires());
InsetText::validate(features);
}
docstring InsetCollapsable::contextMenu(BufferView const & bv, int x,
int y) const
{
- if (decoration() == InsetLayout::Conglomerate)
+ if (decoration() == InsetLayout::CONGLOMERATE)
return from_ascii("context-conglomerate");
if (geometry() == NoButton)