#include "lyxfunc.h"
#include "lyxrc.h"
#include "lyxrow.h"
-#include "lyxrow_funcs.h"
#include "paragraph.h"
#include "paragraph_funcs.h"
#include "ParagraphParameters.h"
#include <sstream>
-using lyx::CoordCache;
-using lyx::docstring;
-using lyx::pit_type;
-using lyx::pos_type;
+
+namespace lyx {
using std::endl;
using std::ostringstream;
}
-namespace {
-
-
-bool changeDepthAllowed(LyXText::DEPTH_CHANGE type,
+static bool changeDepthAllowed(LyXText::DEPTH_CHANGE type,
Paragraph const & par, int max_depth)
{
if (par.layout()->labeltype == LABEL_BIBLIO)
}
-}
-
-
bool LyXText::changeDepthAllowed(LCursor & cur, DEPTH_CHANGE type) const
{
BOOST_ASSERT(this == cur.text());
int max_depth = (beg != 0 ? pars_[beg - 1].getMaxDepthAfter() : 0);
for (pit_type pit = beg; pit != end; ++pit) {
- if (::changeDepthAllowed(type, pars_[pit], max_depth))
+ if (lyx::changeDepthAllowed(type, pars_[pit], max_depth))
return true;
max_depth = pars_[pit].getMaxDepthAfter();
}
for (pit_type pit = beg; pit != end; ++pit) {
Paragraph & par = pars_[pit];
- if (::changeDepthAllowed(type, par, max_depth)) {
+ if (lyx::changeDepthAllowed(type, par, max_depth)) {
int const depth = par.params().depth();
if (type == INC_DEPTH)
par.params().depth(depth + 1);
{
BOOST_ASSERT(this == cur.text());
Row const & row = cur.paragraph().getRow(cur.pos(),cur.boundary());
-
return setCursor(cur, cur.pit(), row.pos());
}
bool implicitSelection =
font.language() == ignore_language
&& font.number() == LyXFont::IGNORE
- && selectWordWhenUnderCursor(cur, lyx::WHOLE_WORD_STRICT);
+ && selectWordWhenUnderCursor(cur, WHOLE_WORD_STRICT);
// Set font
setFont(cur, font, toggleall);
// in the language the implicit word selection is
// disabled.
LCursor tmpcur = cur;
- selectWord(tmpcur, lyx::PREVIOUS_WORD);
+ selectWord(tmpcur, PREVIOUS_WORD);
if (!tmpcur.selection())
cur.message(_("Nothing to index!"));
idxstring = tmpcur.selectionAsString(false);
}
- return lyx::to_utf8(idxstring);
+ return to_utf8(idxstring);
}
else
params.align(align);
}
- par.setLabelWidthString(labelwidthstring);
+ // FIXME UNICODE
+ par.setLabelWidthString(from_ascii(labelwidthstring));
params.noindent(noindent);
}
}
{
BOOST_ASSERT(this == cur.text());
BOOST_ASSERT(inset);
- // FIXME: change tracking (MG)
- cur.paragraph().insertInset(cur.pos(), inset, Change(Change::INSERTED));
+ cur.paragraph().insertInset(cur.pos(), inset,
+ Change(cur.buffer().params().trackChanges ?
+ Change::INSERTED : Change::UNCHANGED));
}
return 0;
}
- lyx::frontend::FontMetrics const & fm
+ frontend::FontMetrics const & fm
= theFontMetrics(getLabelFont(par));
while (vc < end && tmpx <= x) {
c = bidi.vis2log(vc);
last_tmpx = tmpx;
if (body_pos > 0 && c == body_pos - 1) {
- string lsep = layout->labelsep;
- docstring dlsep(lsep.begin(), lsep.end());
- tmpx += r.label_hfill + fm.width(dlsep);
+ // FIXME UNICODE
+ docstring const lsep = from_utf8(layout->labelsep);
+ tmpx += r.label_hfill + fm.width(lsep);
if (par.isLineSeparator(body_pos - 1))
tmpx -= singleWidth(par, body_pos - 1);
}
- if (hfillExpansion(par, row, c)) {
+ if (par.hfillExpansion(row, c)) {
tmpx += singleWidth(par, c);
if (c >= body_pos)
tmpx += r.hfill;
// sets cursor recursively descending into nested editable insets
InsetBase * LyXText::editXY(LCursor & cur, int x, int y)
{
+ if (lyxerr.debugging(Debug::WORKAREA)) {
+ lyxerr << "LyXText::editXY(cur, " << x << ", " << y << ")" << std::endl;
+ bv()->coordCache().dump();
+ }
pit_type pit = getPitNearY(y);
BOOST_ASSERT(pit != -1);
Row const & row = getRowNearY(y, pit);
// This should be just before or just behind the
// cursor position set above.
- BOOST_ASSERT((pos != 0 && inset == pars_[pit].getInset(pos - 1))
- || inset == pars_[pit].getInset(pos));
+ InsetBase * inset2 = pars_[pit].getInset(pos - 1);
+ InsetBase * inset3 = pars_[pit].getInset(pos);
+
+ BOOST_ASSERT((pos != 0 && inset == inset2)
+ || inset == inset3);
// Make sure the cursor points to the position before
// this inset.
if (inset == pars_[pit].getInset(pos - 1))
&& old.pos() < oldpar.size()
&& oldpar.isLineSeparator(old.pos())
&& oldpar.isLineSeparator(old.pos() - 1)
- // FIXME: change tracking (MG)
- && oldpar.lookupChange(old.pos() - 1) != Change(Change::DELETED)) {
- // We need to set the text to Change::INSERTED to
- // get it erased properly
- // FIXME: change tracking (MG)
- oldpar.setChange(old.pos() -1, Change(Change::INSERTED));
- oldpar.erase(old.pos() - 1);
+ && !oldpar.isDeleted(old.pos() - 1)) {
+ oldpar.eraseChar(old.pos() - 1, false); // do not track changes in DEPM
#ifdef WITH_WARNINGS
#warning This will not work anymore when we have multiple views of the same buffer
// In this case, we will have to correct also the cursors held by
{
return int(theFontMetrics(LyXFont(LyXFont::ALL_SANE)).maxHeight() * 1.2);
}
+
+
+} // namespace lyx