#include "insets/Inset.h"
#include "mathed/InsetMath.h"
-#include "mathed/MathMacro.h"
+#include "mathed/InsetMathMacro.h"
#include "support/ExceptionMessage.h"
#include "support/gettext.h"
LBUFERR(inset_);
InsetMath const * math = inset_->asInsetMath();
bool paramless_macro = math && math->asMacro() && !math->asMacro()->nargs();
- return math ? (paramless_macro ? 0 : cell().size())
+ return math ? (paramless_macro ? 0 : cell().size())
: (text()->empty() ? 0 : paragraph().size());
}
CursorSlice::row_type CursorSlice::row() const
{
- // LASSERT: This should only ever be called from an InsetMath.
- // Should we crash in release mode, though, or try to continue?
- LASSERT(asInsetMath(), /**/);
- return asInsetMath()->row(idx_);
+ LASSERT(inset_, return 0);
+ return inset_->row(idx_);
}
CursorSlice::col_type CursorSlice::col() const
{
- // LASSERT: This should only ever be called from an InsetMath.
- // Should we crash in release mode, though, or try to continue?
- LASSERT(asInsetMath(), /**/);
- return asInsetMath()->col(idx_);
+ LASSERT(inset_, return 0);
+ return inset_->col(idx_);
+}
+
+
+void CursorSlice::setPitPos(pit_type pit, pos_type pos)
+{
+ LASSERT(pit != int(text()->paragraphs().size()), return);
+ pit_ = pit;
+ pos_ = pos;
+
+ // Now some strict checking. None of these should happen, but
+ // we're scaredy-cats
+ if (pos < 0) {
+ LYXERR0("Don't like -1!");
+ LATTEST(false);
+ }
+
+ if (pos > paragraph().size()) {
+ LYXERR0("Don't like 1, pos: " << pos
+ << " size: " << paragraph().size()
+ << " par: " << pit);
+ LATTEST(false);
+ }
}
}
-bool CursorSlice::at_end() const
+bool CursorSlice::at_cell_end() const
+{
+ return pit_ == lastpit() && pos_ == lastpos();
+}
+
+
+bool CursorSlice::at_cell_begin() const
+{
+ return pit_ == 0 && pos_ == 0;
+}
+
+
+bool CursorSlice::at_end() const
{
- return idx_ == lastidx() && pit_ == lastpit() && pos_ == lastpos();
+ return idx_ == lastidx() && at_cell_end();
}
bool CursorSlice::at_begin() const
{
- return idx_ == 0 && pit_ == 0 && pos_ == 0;
+ return idx_ == 0 && at_cell_begin();
}