BOOST_ASSERT(idx() <= lastidx());
BOOST_ASSERT(par() <= lastpar());
- // The common case is 'LFUN handled, need update', so make the
+ // The common case is 'LFUN handled, need update', so make the
// LFUN handler's life easier by assuming this as default value.
// The handler can reset the update and val flags if necessary.
disp_.update(true);
{
BOOST_ASSERT(!empty());
//lyxerr << "Leaving inset to the left" << endl;
- inset().notifyCursorLeaves(idx());
+ inset().notifyCursorLeaves(*this);
if (depth() == 1)
return false;
pop();
{
BOOST_ASSERT(!empty());
//lyxerr << "Leaving inset to the right" << endl;
- inset().notifyCursorLeaves(idx());
+ inset().notifyCursorLeaves(*this);
if (depth() == 1)
return false;
pop();
CursorSlice & LCursor::anchor()
{
+ if (anchor_.size() < size()) {
+ lyxerr << "anchor_.size() < cursor_.size() "
+ "should not happen when accessing the anchor" << endl;
+ BOOST_ASSERT(false);
+ }
BOOST_ASSERT(!anchor_.empty());
- return anchor_.back();
+ // this size is cursor_.size()
+ return anchor_[size() - 1];
}
CursorSlice const & LCursor::anchor() const
{
+ if (anchor_.size() < size()) {
+ lyxerr << "anchor_.size() < cursor_.size() "
+ "should not happen when accessing the anchor" << endl;
+ BOOST_ASSERT(false);
+ }
+ // this size is cursor_.size()
BOOST_ASSERT(!anchor_.empty());
- return anchor_.back();
+ return anchor_[size() - 1];
}
{
selection() = true;
// a selection with no contents is not a selection
+#warning doesnt look ok
if (par() == anchor().par() && pos() == anchor().pos())
selection() = false;
}
//lyxerr << "LCursor::eraseSelection" << endl;
CursorSlice const & i1 = selBegin();
CursorSlice const & i2 = selEnd();
+#ifdef WITH_WARNINGS
#warning FIXME
+#endif
if (i1.inset().asMathInset()) {
if (i1.idx() == i2.idx()) {
i1.cell().erase(i1.pos(), i2.pos());
}
-void LCursor::selClear()
-{
- resetAnchor();
- clearSelection();
-}
-
-
void LCursor::selCopy()
{
if (selection()) {
#include "mathed/math_factory.h"
#include "mathed/math_gridinset.h"
#include "mathed/math_macroarg.h"
-#include "mathed/math_macrotemplate.h"
#include "mathed/math_mathmlstream.h"
#include "mathed/math_scriptinset.h"
#include "mathed/math_support.h"
void LCursor::markInsert()
{
- cell().insert(pos(), MathAtom(new MathCharInset(0)));
+ insert(char(0));
}
void LCursor::insert(string const & str)
{
- lyxerr << "LCursor::insert str '" << str << "'" << endl;
+ //lyxerr << "LCursor::insert str '" << str << "'" << endl;
for (string::const_iterator it = str.begin(); it != str.end(); ++it)
insert(*it);
}
BOOST_ASSERT(!empty());
if (inMathed()) {
selClearOrDel();
- plainInsert(MathAtom(new MathCharInset(c)));
+ insert(new MathCharInset(c));
} else {
text()->insertChar(*this, c);
}
macroModeClose();
selClearOrDel();
plainInsert(t);
+ lyxerr << "LCursor::insert MathAtom: cur:\n" << *this << endl;
}
if (pos() != 0 && prevAtom()->nargs() > 0) {
// let's require two backspaces for 'big stuff' and
// highlight on the first
+ resetAnchor();
selection() = true;
--pos();
} else {
return true;
}
+ // 'clever' UI hack: only erase large items if previously slected
if (pos() != lastpos() && inset().nargs() > 0) {
+ resetAnchor();
selection() = true;
++pos();
} else {
}
-bool LCursor::inMacroArgMode() const
-{
- return pos() > 0 && prevAtom()->getChar() == '#';
-}
-
-
-MathGridInset * LCursor::enclosingGrid(idx_type & idx) const
-{
- for (MathInset::difference_type i = depth() - 1; i >= 0; --i) {
- MathInset * m = operator[](i).inset().asMathInset();
- if (!m)
- return 0;
- MathGridInset * p = m->asGridInset();
- if (p) {
- idx = operator[](i).idx();
- return p;
- }
- }
- return 0;
-}
-
-
void LCursor::pullArg()
{
+#ifdef WITH_WARNINGS
#warning Look here
+#endif
MathArray ar = cell();
if (popLeft() && inMathed()) {
plainErase();
void LCursor::touch()
{
+#ifdef WITH_WARNINGS
#warning look here
+#endif
#if 0
DocIterator::const_iterator it = begin();
DocIterator::const_iterator et = end();
}
-char LCursor::valign()
-{
- idx_type idx;
- MathGridInset * p = enclosingGrid(idx);
- return p ? p->valign() : '\0';
-}
-
-
-char LCursor::halign()
-{
- idx_type idx;
- MathGridInset * p = enclosingGrid(idx);
- return p ? p->halign(idx % p->ncols()) : '\0';
-}
-
-
bool LCursor::goUpDown(bool up)
{
// Be warned: The 'logic' implemented in this function is highly
{
BOOST_ASSERT(!empty());
par_type beg, end;
- CursorSlice bottom = operator[](0);
+ CursorSlice bottom = operator[](0);
LyXText * text = bottom.text();
BOOST_ASSERT(text);
getParsInRange(text->paragraphs(), ylow, yhigh, beg, end);
return result;
}
+#ifdef WITH_WARNINGS
#warning and mathed?
+#endif
return string();
}
CursorSlice const & sl = operator[](s);
LyXText & text = *sl.text();
LyXFont font = text.getPar(sl.par()).getFont(
- bv().buffer()->params(), sl.pos(), outerFont(sl.par(), text.paragraphs()));
+ bv().buffer()->params(), sl.pos(), outerFont(sl.par(), text.paragraphs()));
return font.language()->encoding();
}