]> git.lyx.org Git - lyx.git/blobdiff - src/BufferView_pimpl.C
move some selection related stuff over to textcursor.C
[lyx.git] / src / BufferView_pimpl.C
index f2c3be9d81219075fe9240bc149933b0bd004769..59c7df3c5a7f42f13d868b0832d22c2ece3ea5df 100644 (file)
@@ -130,6 +130,12 @@ BufferView::Pimpl::Pimpl(BufferView * bv, LyXView * owner,
 }
 
 
+void BufferView::Pimpl::addError(ErrorItem const & ei)
+{
+       errorlist_.push_back(ei);
+
+}
+
 
 bool BufferView::Pimpl::loadLyXFile(string const & filename, bool tolastfiles)
 {
@@ -161,9 +167,13 @@ bool BufferView::Pimpl::loadLyXFile(string const & filename, bool tolastfiles)
        }
        Buffer * b = bufferlist.newBuffer(s);
 
-       //this is the point to attach to the error signal in the buffer
+       //attach to the error signal in the buffer
+       b->parseError.connect(boost::bind(&BufferView::Pimpl::addError, 
+                                         this, _1));
+
+       bool loaded = ::loadLyXFile(b, s);
 
-       if (!::loadLyXFile(b, s)) {
+       if (! loaded) {
                bufferlist.release(b);
                string text = bformat(_("The document %1$s does "
                                        "not yet exist.\n\n"
@@ -172,17 +182,21 @@ bool BufferView::Pimpl::loadLyXFile(string const & filename, bool tolastfiles)
                int const ret = Alert::prompt(_("Create new document?"),
                         text, 0, 1, _("&Create"), _("Cancel"));
 
-               if (ret == 0) {
-                       bufferlist.close(buffer_, false);
-                       buffer(newFile(s, string(), true));
-               }
-       }
+               if (ret == 0)
+                       b = newFile(s, string(), true);
+               else
+                       return false;
+
+       } 
 
        buffer(b);
 
        if (tolastfiles)
                lastfiles->newFile(b->fileName());
 
+       if (loaded)
+               bv_->showErrorList(_("Parse"));
+
        return true;
 }
 
@@ -244,7 +258,7 @@ void BufferView::Pimpl::buffer(Buffer * b)
                }
 
                // FIXME: needed when ?
-               bv_->text->top_y(screen().topCursorVisible(bv_->text->cursor, bv_->text->top_y()));
+               bv_->text->top_y(screen().topCursorVisible(bv_->text));
 
                // Buffer-dependent dialogs should be updated or
                // hidden. This should go here because some dialogs (eg ToC)
@@ -395,7 +409,7 @@ int BufferView::Pimpl::resizeCurrentBuffer()
                bv_->theLockingInset(the_locking_inset);
        }
 
-       bv_->text->top_y(screen().topCursorVisible(bv_->text->cursor, bv_->text->top_y()));
+       bv_->text->top_y(screen().topCursorVisible(bv_->text));
 
        switchKeyMap();
        owner_->busy(false);
@@ -603,7 +617,7 @@ void BufferView::Pimpl::update(LyXText * text, BufferView::UpdateCodes f)
                text->selection.cursor = text->cursor;
        }
 
-       text->fullRebreak();
+       text->partialRebreak();
 
        if (text->inset_owner) {
                text->inset_owner->setUpdateStatus(bv_, InsetText::NONE);
@@ -622,7 +636,7 @@ void BufferView::Pimpl::update(BufferView::UpdateCodes f)
                text->selection.cursor = text->cursor;
        }
 
-       text->fullRebreak();
+       text->partialRebreak();
 
        if (text->inset_owner) {
                text->inset_owner->setUpdateStatus(bv_, InsetText::NONE);