]> git.lyx.org Git - lyx.git/blobdiff - src/bufferview_funcs.C
architectural changes to tex2lyx
[lyx.git] / src / bufferview_funcs.C
index df8af0248de5c7e856ae437694f0ebb3a597bf5d..48447dd6a85559be326e5c0b3a6116ee00bccb12 100644 (file)
 #include "frontends/Alert.h"
 #include "mathed/math_cursor.h"
 
-#include "support/lstrings.h"
+#include "support/tostr.h"
 #include "Lsstream.h"
 
 #include "insets/updatableinset.h"
+#include <boost/bind.hpp>
+#include <algorithm>
+
+using namespace lyx::support;
 
 
 namespace {
@@ -46,6 +50,16 @@ bool toggleall(false);
 
 namespace bv_funcs {
 
+
+void resizeInsets(BufferView * bv)
+{
+       ParagraphList & paragraphs = bv->buffer()->paragraphs;
+       /// then remove all LyXText in text-insets
+       std::for_each(paragraphs.begin(), paragraphs.end(),
+                     boost::bind(&Paragraph::resizeInsetsLyXText, _1, bv));
+}
+
+
 // Set data using font and toggle
 // If successful, returns true
 bool font2string(LyXFont const & font, bool toggle, string & data)
@@ -225,11 +239,10 @@ bool changeDepth(BufferView * bv, LyXText * text, DEPTH_CHANGE type, bool test_o
        if (test_only)
                return text->changeDepth(type, true);
 
-       bv->update(BufferView::SELECT);
        bool const changed = text->changeDepth(type, false);
        if (text->inset_owner)
-               bv->updateInset((Inset *)text->inset_owner);
-       bv->update(BufferView::SELECT);
+               bv->updateInset((InsetOld *)text->inset_owner);
+       bv->update();
        return changed;
 }
 
@@ -319,7 +332,11 @@ string const currentState(BufferView * bv)
                buffer->params.getLyXTextClass().defaultfont();
        font.reduce(defaultfont);
 
-       state << bformat(_("Font: %1$s"), font.stateText(&buffer->params));
+       // avoid _(...) re-entrance problem
+       string const s = font.stateText(&buffer->params);
+       state << bformat(_("Font: %1$s"), s);
+
+       // state << bformat(_("Font: %1$s"), font.stateText(&buffer->params));
 
        // The paragraph depth
        int depth = text->getDepth();
@@ -355,6 +372,8 @@ string const currentState(BufferView * bv)
        }
 #ifdef DEVEL_VERSION
        state << _(", Paragraph: ") << text->cursor.par()->id();
+       state << "  Inset: " <<
+               (text->cursor.par()->inInset() ? text->cursor.par()->inInset()->id() : -1);
 #endif
        return STRCONV(state.str());
 }
@@ -378,14 +397,13 @@ void toggleAndShow(BufferView * bv, LyXFont const & font, bool toggleall)
        if (!text)
                return;
 
-       bv->update(text, BufferView::SELECT);
        text->toggleFree(font, toggleall);
-       bv->update(text, BufferView::SELECT);
+       bv->update();
 
        if (font.language() != ignore_language ||
            font.number() != LyXFont::IGNORE) {
                LyXCursor & cursor = text->cursor;
-               text->computeBidiTables(bv->buffer(), cursor.row());
+               text->computeBidiTables(bv->buffer(), text->cursorRow());
                if (cursor.boundary() !=
                    text->isBoundary(bv->buffer(), *cursor.par(), cursor.pos(),
                                     text->real_current_font))
@@ -394,4 +412,15 @@ void toggleAndShow(BufferView * bv, LyXFont const & font, bool toggleall)
        }
 }
 
+
+// deletes a selection during an insertion
+void replaceSelection(LyXText * lt)
+{
+       if (lt->selection.set()) {
+               lt->update();
+               lt->cutSelection(true, false);
+               lt->update();
+       }
+}
+
 }; // namespace bv_funcs