]> git.lyx.org Git - lyx.git/blobdiff - src/BufferView_pimpl.C
Alfredo's second patch
[lyx.git] / src / BufferView_pimpl.C
index 95a63eb99da2f7362bf404874db3bf386827b024..a2f74e21a1a8148baacdd20a54010cc0e0d176cd 100644 (file)
@@ -57,7 +57,7 @@
 
 #include <boost/bind.hpp>
 #include <boost/signals/connection.hpp>
-#include "BoostFormat.h"
+#include "support/BoostFormat.h"
 
 #include <unistd.h>
 #include <sys/wait.h>
@@ -72,6 +72,7 @@ using std::make_pair;
 using std::min;
 
 using lyx::pos_type;
+using namespace bv_funcs;
 
 extern BufferList bufferlist;
 
@@ -186,7 +187,7 @@ void BufferView::Pimpl::buffer(Buffer * b)
                // FIXME: needed when ?
                bv_->text->top_y(screen().topCursorVisible(bv_->text->cursor, bv_->text->top_y()));
 
-               // Similarly, buffer-dependent dialogs should be updated or
+               // Buffer-dependent dialogs should be updated or
                // hidden. This should go here because some dialogs (eg ToC)
                // require bv_->text.
                owner_->getDialogs().updateBufferDependent(true);
@@ -209,6 +210,13 @@ void BufferView::Pimpl::buffer(Buffer * b)
        owner_->updateLayoutChoice();
        owner_->updateWindowTitle();
 
+       if (buffer_) {
+               // Don't forget to update the Layout
+               string const layoutname =
+                       bv_->text->cursor.par()->layout()->name();
+               owner_->setLayout(layoutname);
+       }
+
        if (grfx::Previews::activated() && buffer_)
                grfx::Previews::get().generateBufferPreviews(*buffer_);
 }
@@ -227,7 +235,7 @@ bool BufferView::Pimpl::fitCursor()
 
        dispatch(FuncRequest(LFUN_PARAGRAPH_UPDATE));
 
-       // We need to always update, in case we did a 
+       // We need to always update, in case we did a
        // paste and we stayed anchored to a row, but
        // the actual height of the doc changed ...
        updateScrollbar();
@@ -267,11 +275,11 @@ int BufferView::Pimpl::resizeCurrentBuffer()
        owner_->message(_("Formatting document..."));
 
        if (bv_->text) {
-               par = bv_->text->cursor.par();
+               par = &*bv_->text->cursor.par();
                pos = bv_->text->cursor.pos();
-               selstartpar = bv_->text->selection.start.par();
+               selstartpar = &*bv_->text->selection.start.par();
                selstartpos = bv_->text->selection.start.pos();
-               selendpar = bv_->text->selection.end.par();
+               selendpar = &*bv_->text->selection.end.par();
                selendpos = bv_->text->selection.end.pos();
                selection = bv_->text->selection.set();
                mark_set = bv_->text->selection.mark();
@@ -329,6 +337,9 @@ int BufferView::Pimpl::resizeCurrentBuffer()
        switchKeyMap();
        owner_->busy(false);
 
+       // reset the "Formatting..." message
+       owner_->clearMessage();
+
        updateScrollbar();
 
        return 0;
@@ -629,7 +640,7 @@ void BufferView::Pimpl::restorePosition(unsigned int i)
                if (b != 0) buffer(b);
        }
 
-       Paragraph * par = buffer_->getParFromID(saved_positions[i].par_id);
+       Paragraph * par = &*buffer_->getParFromID(saved_positions[i].par_id);
        if (!par)
                return;
 
@@ -926,9 +937,16 @@ bool BufferView::Pimpl::workAreaDispatch(FuncRequest const & ev_in)
 
        bool const res = dispatch(ev_in);
 
+       // FIXME: we should skip these when selecting
        bv_->owner()->updateLayoutChoice();
+       bv_->owner()->updateToolbar();
        bv_->fitCursor();
 
+       // slight hack: this is only called currently when
+       // we clicked somewhere, so we force through the display
+       // of the new status here.
+       bv_->owner()->clearMessage();
+
        return res;
 }
 
@@ -957,15 +975,6 @@ bool BufferView::Pimpl::dispatch(FuncRequest const & ev_in)
                // a tabular-inset
                break;
 
-       case LFUN_LAYOUT_COPY:
-               bv_->copyEnvironment();
-               break;
-
-       case LFUN_LAYOUT_PASTE:
-               bv_->pasteEnvironment();
-               switchKeyMap();
-               break;
-
        case LFUN_FILE_INSERT:
                MenuInsertLyXFile(ev.argument);
                break;
@@ -1143,7 +1152,7 @@ bool BufferView::Pimpl::dispatch(FuncRequest const & ev_in)
                }
        }
        break;
-       
+
        case LFUN_FLOAT_LIST:
                if (tclass.floats().typeExist(ev.argument)) {
                        Inset * inset = new InsetFloatList(ev.argument);
@@ -1156,7 +1165,7 @@ bool BufferView::Pimpl::dispatch(FuncRequest const & ev_in)
                break;
 
        case LFUN_LAYOUT_PARAGRAPH: {
-               Paragraph const * par = bv_->getLyXText()->cursor.par();
+               Paragraph const * par = &*bv_->getLyXText()->cursor.par();
                if (!par)
                        break;
 
@@ -1169,7 +1178,7 @@ bool BufferView::Pimpl::dispatch(FuncRequest const & ev_in)
        }
 
        case LFUN_PARAGRAPH_UPDATE: {
-               Paragraph const * par = bv_->getLyXText()->cursor.par();
+               Paragraph const * par = &*bv_->getLyXText()->cursor.par();
                if (!par)
                        break;