X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2FInsetCommand.cpp;h=879d9a35e06c56ead351199a55b8f67bdc787310;hb=e4c46abeb7385960c9dd42494e3c7c1f3e699b56;hp=601e5a7b4788a9b1ac318fa846d461f13c3a211d;hpb=838af80834ac38c231ff080acc3a6d60ad664ede;p=lyx.git diff --git a/src/insets/InsetCommand.cpp b/src/insets/InsetCommand.cpp index 601e5a7b47..879d9a35e0 100644 --- a/src/insets/InsetCommand.cpp +++ b/src/insets/InsetCommand.cpp @@ -21,6 +21,7 @@ #include "FuncStatus.h" #include "Lexer.h" #include "MetricsInfo.h" +#include "texstream.h" #include "insets/InsetBox.h" #include "insets/InsetBranch.h" @@ -29,6 +30,7 @@ #include "insets/InsetExternal.h" #include "insets/InsetFloat.h" #include "insets/InsetGraphics.h" +#include "insets/InsetIndex.h" #include "insets/InsetLine.h" #include "insets/InsetListings.h" #include "insets/InsetNote.h" @@ -50,7 +52,7 @@ using namespace std; namespace lyx { -// FIXME Would it now be possible to use the InsetCode in +// FIXME Would it now be possible to use the InsetCode in // place of the mailer name and recover that information? InsetCommand::InsetCommand(Buffer * buf, InsetCommandParams const & p) : Inset(buf), p_(p) @@ -64,6 +66,20 @@ InsetCommand::InsetCommand(InsetCommand const & rhs) {} +InsetCommand & InsetCommand::operator=(InsetCommand const & rhs) +{ + if (&rhs == this) + return *this; + + Inset::operator=(rhs); + p_ = rhs.p_; + mouse_hover_.clear(); + button_ = RenderButton(); + + return *this; +} + + InsetCommand::~InsetCommand() { if (p_.code() != NO_CODE) @@ -79,7 +95,7 @@ InsetCommand::~InsetCommand() void InsetCommand::metrics(MetricsInfo & mi, Dimension & dim) const { - button_.update(screenLabel(), editable() || hasSettings()); + button_.update(screenLabel(), editable() || clickable(*mi.base.bv, 0, 0)); button_.metrics(mi, dim); } @@ -118,15 +134,15 @@ void InsetCommand::setParams(InsetCommandParams const & p) } -int InsetCommand::latex(odocstream & os, OutputParams const & runparams_in) const +void InsetCommand::latex(otexstream & os, OutputParams const & runparams_in) const { OutputParams runparams = runparams_in; os << getCommand(runparams); - return 0; } -int InsetCommand::plaintext(odocstream & os, OutputParams const &) const +int InsetCommand::plaintext(odocstringstream & os, + OutputParams const &, size_t) const { docstring const str = "[" + buffer().B_("LaTeX Command: ") + from_utf8(getCmdName()) + "]"; @@ -189,30 +205,30 @@ bool InsetCommand::getStatus(Cursor & cur, FuncRequest const & cmd, case LFUN_ERT_INSERT: status.setEnabled(false); return true; - + // we handle these case LFUN_INSET_MODIFY: if (cmd.getArg(0) == "changetype") { string const newtype = cmd.getArg(1); status.setEnabled(p_.isCompatibleCommand(p_.code(), newtype)); status.setOnOff(newtype == p_.getCmdName()); - } + } status.setEnabled(true); return true; - + case LFUN_INSET_DIALOG_UPDATE: status.setEnabled(true); return true; - + default: return Inset::getStatus(cur, cmd, status); } } -docstring InsetCommand::contextMenuName() const +string InsetCommand::contextMenuName() const { - return from_ascii("context-") + from_ascii(insetName(p_.code())); + return "context-" + insetName(p_.code()); } @@ -265,7 +281,7 @@ bool decodeInsetParam(string const & name, string & data, switch (code) { case BIBITEM_CODE: case BIBTEX_CODE: - case INDEX_CODE: + case INDEX_PRINT_CODE: case LABEL_CODE: case LINE_CODE: case NOMENCL_CODE: @@ -317,6 +333,11 @@ bool decodeInsetParam(string const & name, string & data, data = InsetFloat::params2string(p); break; } + case INDEX_CODE: { + InsetIndexParams p; + data = InsetIndex::params2string(p); + break; + } case LISTINGS_CODE: { InsetListingsParams p; data = InsetListings::params2string(p); @@ -327,6 +348,11 @@ bool decodeInsetParam(string const & name, string & data, data = InsetGraphics::params2string(p, buffer); break; } + case MATH_SPACE_CODE: { + InsetSpaceParams p(true); + data = InsetSpace::params2string(p); + break; + } case NOTE_CODE: { InsetNoteParams p; data = InsetNote::params2string(p);