#include "frontends/Menubar.h"
#include "frontends/Toolbars.h"
+#include "support/environment.h"
#include "support/filefilterlist.h"
#include "support/filetools.h"
#include "support/forkedcontr.h"
bool getStatus(LCursor cursor,
FuncRequest const & cmd, FuncStatus & status)
{
+ // Try to fix cursor in case it is broken.
+ cursor.fixIfBroken();
+
// This is, of course, a mess. Better create a new doc iterator and use
// this in Inset::getStatus. This might require an additional
// BufferView * arg, though (which should be avoided)
//LCursor safe = *this;
bool res = false;
- for ( ; cursor.size(); cursor.pop()) {
+ for ( ; cursor.depth(); cursor.pop()) {
//lyxerr << "\nLCursor::getStatus: cmd: " << cmd << endl << *this << endl;
DocIterator::idx_type & idx = cursor.idx();
DocIterator::idx_type const lastidx = cursor.lastidx();
-
- if (idx > lastidx) {
- lyxerr << "wrong idx " << idx << ", max is " << lastidx
- << ". Trying to correct this." << endl;
- idx = lastidx;
- }
+ BOOST_ASSERT(idx <= lastidx);
DocIterator::pit_type & pit = cursor.pit();
DocIterator::pit_type const lastpit = cursor.lastpit();
-
- if (pit > lastpit) {
- lyxerr << "wrong par " << pit << ", max is " << lastpit
- << ". Trying to correct this." << endl;
- pit = lastpit;
- }
+ BOOST_ASSERT(pit <= lastpit);
DocIterator::pos_type & pos = cursor.pos();
DocIterator::pos_type const lastpos = cursor.lastpos();
-
- if (pos > lastpos) {
- lyxerr << "wrong pos " << pos << ", max is " << lastpos
- << ". Trying to correct this." << endl;
- pos = lastpos;
- }
+ BOOST_ASSERT(pos <= lastpos);
// The inset's getStatus() will return 'true' if it made
// a definitive decision on whether it want to handle the
case LFUN_INSET_SETTINGS: {
enable = false;
- if (!cur.size())
+ if (!cur)
break;
UpdatableInset * inset = cur.inset().asUpdatableInset();
lyxerr << "inset: " << inset << endl;
case LFUN_GETNAME:
case LFUN_NOTIFY:
case LFUN_GOTOFILEROW:
- case LFUN_GOTO_PARAGRAPH:
case LFUN_DIALOG_SHOW_NEXT_INSET:
case LFUN_DIALOG_HIDE:
case LFUN_DIALOG_DISCONNECT_INSET:
break;
}
- case LFUN_GOTO_PARAGRAPH: {
- istringstream is(argument);
- int id;
- is >> id;
- ParIterator par = owner->buffer()->getParFromID(id);
- if (par == owner->buffer()->par_iterator_end()) {
- lyxerr[Debug::INFO] << "No matching paragraph found! ["
- << id << ']' << endl;
- break;
- } else {
- lyxerr[Debug::INFO] << "Paragraph " << par->id()
- << " found." << endl;
- }
-
- // Set the cursor
- view()->setCursor(par, 0);
-
- view()->switchKeyMap();
- owner->view_state_changed();
-
- view()->center();
- // see BufferView_pimpl::center()
- view()->updateScrollbar();
- break;
- }
-
case LFUN_DIALOG_SHOW: {
string const name = cmd.getArg(0);
string data = trim(cmd.argument.substr(name.size()));