#include "LyX.h"
#include "LyXRC.h"
#include "MetricsInfo.h"
-#include "OutputParams.h"
#include "TexRow.h"
#include "Text.h"
{
odocstringstream oss;
otexrowstream ots(oss);
- WriteStream os(ots);
+ TeXMathStream os(ots);
os << "---------------------------------------------\n";
write(os);
os << "\n";
}
-void InsetMathNest::write(WriteStream & os) const
+void InsetMathNest::write(TeXMathStream & os) const
{
MathEnsurer ensurer(os, currentMode() == MATH_MODE);
ModeSpecifier specifier(os, currentMode(), lockedMode());
void InsetMathNest::latex(otexstream & os, OutputParams const & runparams) const
{
- WriteStream wi(os, runparams.moving_arg, true,
- runparams.dryrun ? WriteStream::wsDryrun : WriteStream::wsDefault,
- runparams.encoding);
+ TeXMathStream wi(os, runparams.moving_arg, true,
+ runparams.dryrun ? TeXMathStream::wsDryrun : TeXMathStream::wsDefault,
+ runparams.encoding);
wi.strikeoutMath(runparams.inDeletedInset);
if (runparams.inulemcmd) {
- wi.ulemCmd(WriteStream::UNDERLINE);
+ wi.ulemCmd(TeXMathStream::UNDERLINE);
if (runparams.local_font) {
FontInfo f = runparams.local_font->fontInfo();
if (f.strikeout() == FONT_ON)
- wi.ulemCmd(WriteStream::STRIKEOUT);
+ wi.ulemCmd(TeXMathStream::STRIKEOUT);
}
}
wi.canBreakLine(os.canBreakLine());
void InsetMathNest::handleNest(Cursor & cur, MathAtom const & nest,
docstring const & arg)
{
- CursorSlice i1 = cur.selBegin();
- CursorSlice i2 = cur.selEnd();
+ DocIterator const i1 = cur.selectionBegin();
+ DocIterator const i2 = cur.selectionEnd();
if (!i1.inset().asInsetMath())
return;
if (i1.idx() == i2.idx()) {
}
// multiple selected cells in a simple non-grid inset
- if (i1.asInsetMath()->nrows() == 0 || i1.asInsetMath()->ncols() == 0) {
+ if (i1.inset().nrows() == 0 || i1.inset().ncols() == 0) {
for (idx_type i = i1.idx(); i <= i2.idx(); ++i) {
+ cur.setCursor(i1);
// select cell
cur.idx() = i;
cur.pos() = 0;
cur.pos() = cur.lastpos();
cur.setSelection();
- // change font of cell
+ // do the real job
cur.handleNest(nest);
cur.insert(arg);
-
- // cur is in the font inset now. If the loop continues,
- // we need to get outside again for the next cell
- if (i + 1 <= i2.idx())
- cur.pop_back();
}
return;
}
// the complicated case with multiple selected cells in a grid
row_type r1, r2;
col_type c1, c2;
- cap::region(i1, i2, r1, r2, c1, c2);
+ cap::region(i1.top(), i2.top(), r1, r2, c1, c2);
for (row_type row = r1; row <= r2; ++row) {
for (col_type col = c1; col <= c2; ++col) {
+ cur.setCursor(i1);
// select cell
- cur.idx() = i1.asInsetMath()->index(row, col);
+ cur.idx() = i1.inset().index(row, col);
cur.pos() = 0;
cur.resetAnchor();
cur.pos() = cur.lastpos();
cur.setSelection();
- //
+ // do the real job
cur.handleNest(nest);
cur.insert(arg);
-
- // cur is in the font inset now. If the loop continues,
- // we need to get outside again for the next cell
- if (col + 1 <= c2 || row + 1 <= r2)
- cur.pop_back();
}
}
}
cur.forceBufferUpdate();
break;
- case LFUN_COPY:
- copySelection(cur);
- cur.message(_("Copy"));
- break;
-
case LFUN_MOUSE_PRESS:
lfunMousePress(cur, cmd);
break;
in->limits(NO_LIMITS);
else
in->limits(AUTO_LIMITS);
- } else if (in->limits() == AUTO_LIMITS)
- in->limits(in->defaultLimits() == LIMITS ? NO_LIMITS : LIMITS);
- else
+ } else if (in->limits() != AUTO_LIMITS)
in->limits(AUTO_LIMITS);
+ else if (in->defaultLimits(cur.cell().displayStyle()) == LIMITS)
+ in->limits(NO_LIMITS);
+ else
+ in->limits(LIMITS);
return;
}