Paragraph::value_type c = par->getChar(i);
switch (c) {
case Paragraph::META_INSET:
- case Paragraph::META_HFILL:
- lyxerr << "Element is not allowed in insertERT"
- << endl;
- case Paragraph::META_NEWLINE:
- os << "\n\\newline \n";
+ if (par->getInset(i)->lyxCode() != Inset::NEWLINE_CODE) {
+ lyxerr << "Element is not allowed in insertERT"
+ << endl;
+ } else {
+ par->getInset(i)->write(buf, os);
+ }
break;
+
case '\\':
os << "\n\\backslash \n";
break;
pos_type siz = par->size();
for (pos_type i = 0; i < siz; ++i) {
// ignore all struck out text
- if (isDeletedText(par, i))
+ if (isDeletedText(*par, i))
continue;
-
- Paragraph::value_type c = par->getChar(i);
- switch (c) {
- case Paragraph::META_NEWLINE:
+
+ if (par->isNewline(i)) {
os << '\n';
++lines;
- break;
- default:
- os << c;
- break;
+ } else {
+ os << par->getChar(i);
}
}
par = par->next();
while (par) {
pos_type siz = par->size();
for (pos_type i = 0; i < siz; ++i) {
- Paragraph::value_type c = par->getChar(i);
- switch (c) {
- case Paragraph::META_NEWLINE:
+ if (par->isNewline(i)) {
os << '\n';
++lines;
- break;
- default:
- os << c;
- break;
+ } else {
+ os << par->getChar(i);
}
}
par = par->next();
while (par) {
pos_type siz = par->size();
for (pos_type i = 0; i < siz; ++i) {
- Paragraph::value_type c = par->getChar(i);
- switch (c) {
- case Paragraph::META_NEWLINE:
+ if (par->isNewline(i)) {
os << '\n';
++lines;
- break;
- default:
- os << c;
- break;
+ } else {
+ os << par->getChar(i);
}
}
par = par->next();
Inset::RESULT InsetERT::localDispatch(FuncRequest const & cmd)
{
- Inset::RESULT result = DISPATCHED_NOUPDATE;
+ Inset::RESULT result = UNDISPATCHED;
BufferView * bv = cmd.view();
if (inset.paragraph()->empty()) {
}
switch (cmd.action) {
- case LFUN_MOUSE_PRESS:
- lfunMousePress(cmd);
- return DISPATCHED;
+ case LFUN_INSET_MODIFY: {
+ InsetERT::ERTStatus status_;
+ InsetERTMailer::string2params(cmd.argument, status_);
+
+ status(bv, status_);
+ bv->updateInset(this);
+ result = DISPATCHED;
+ }
+ break;
- case LFUN_MOUSE_MOTION:
- lfunMouseMotion(cmd);
- return DISPATCHED;
+ case LFUN_MOUSE_PRESS:
+ lfunMousePress(cmd);
+ result = DISPATCHED;
+ break;
- case LFUN_MOUSE_RELEASE:
- lfunMouseRelease(cmd);
- return DISPATCHED;
+ case LFUN_MOUSE_MOTION:
+ lfunMouseMotion(cmd);
+ result = DISPATCHED;
+ break;
- case LFUN_LAYOUT:
- bv->owner()->setLayout(inset.paragraph()->layout()->name());
- break;
+ case LFUN_MOUSE_RELEASE:
+ lfunMouseRelease(cmd);
+ result = DISPATCHED;
+ break;
+
+ case LFUN_LAYOUT:
+ bv->owner()->setLayout(inset.paragraph()->layout()->name());
+ result = DISPATCHED_NOUPDATE;
+ break;
- default:
- result = InsetCollapsable::localDispatch(cmd);
+ default:
+ result = InsetCollapsable::localDispatch(cmd);
}
switch (cmd.action) {
void InsetERT::draw(BufferView * bv, LyXFont const & f,
- int baseline, float & x, bool cleared) const
+ int baseline, float & x) const
{
lyx::Assert(bv);
cache(bv);
if (!owner())
x += static_cast<float>(scroll());
- if (!cleared && (inset.need_update == InsetText::FULL ||
- inset.need_update == InsetText::INIT ||
- top_x != int(x) ||
- top_baseline != baseline))
- {
- // we don't need anymore to clear here we just have to tell
- // the underlying LyXText that it should do the RowClear!
- inset.setUpdateStatus(bv, InsetText::FULL);
- bv->text->status(bv, LyXText::CHANGED_IN_DRAW);
- return;
- }
-
top_x = int(x);
topx_set = true;
top_baseline = baseline;
int const bl = baseline - ascent(bv, f) + ascent_collapsed();
if (inlined()) {
- inset.draw(bv, f, baseline, x, cleared);
+ inset.draw(bv, f, baseline, x);
} else {
draw_collapsed(pain, bl, old_x);
- inset.draw(bv, f,
- bl + descent_collapsed() + inset.ascent(bv, f),
- x, cleared);
+ inset.draw(bv, f, bl + descent_collapsed() + inset.ascent(bv, f), x);
}
need_update = NONE;
}
bv->unlockInset(const_cast<InsetERT *>(this));
break;
}
- if (bv)
- bv->updateInset(const_cast<InsetERT *>(this), false);
+ if (bv) {
+ bv->updateInset(const_cast<InsetERT *>(this));
+ bv->buffer()->markDirty();
+ }
}
}
-bool InsetERT::showInsetDialog(BufferView *) const
+bool InsetERT::showInsetDialog(BufferView * bv) const
{
InsetERTMailer mailer(const_cast<InsetERT &>(*this));
- mailer.showDialog();
+ mailer.showDialog(bv);
return true;
}
}
+string const InsetERTMailer::name_("ert");
+
InsetERTMailer::InsetERTMailer(InsetERT & inset)
- : name_("ert"), inset_(inset)
+ : inset_(inset)
{}
InsetERT::ERTStatus & status)
{
status = InsetERT::Collapsed;
- if (in.empty())
+
+ string name;
+ string body = split(in, name, ' ');
+
+ if (body.empty())
return;
- status = static_cast<InsetERT::ERTStatus>(strToInt(in));
+ status = static_cast<InsetERT::ERTStatus>(strToInt(body));
}
string const
InsetERTMailer::params2string(InsetERT::ERTStatus status)
{
- return tostr(status);
+ return name_ + ' ' + tostr(status);
}