]> git.lyx.org Git - lyx.git/blobdiff - src/bufferview_funcs.C
Applied Angus patch to compile on DEC C++ and to avoid name clashes
[lyx.git] / src / bufferview_funcs.C
index 80146c4483ff39ac64eb046f5cf7b227118e6429..8aa4bcb5c144941f43c2ce457930bda33c402613 100644 (file)
@@ -25,9 +25,7 @@
 #include "buffer.h"
 #include "support/lstrings.h"
 #include "lyx_cb.h"
-#include "layout_forms.h"
 
-extern FD_form_character * fd_form_character;
 
 #ifndef NEW_INSETS
 void Foot(BufferView * bv)
@@ -38,9 +36,9 @@ void Foot(BufferView * bv)
        bv->owner()->getMiniBuffer()
                ->Set(_("Inserting Footnote..."));
        bv->hideCursor();
-       bv->update(BufferView::SELECT|BufferView::FITCUR);
+       bv->update(bv->text, BufferView::SELECT|BufferView::FITCUR);
        bv->text->InsertFootnoteEnvironment(bv, LyXParagraph::FOOTNOTE);
-       bv->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
+       bv->update(bv->text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
 }
 #endif
 
@@ -75,9 +73,9 @@ void Margin(BufferView * bv)
        if (bv->available()) {
                bv->owner()->getMiniBuffer()->Set(_("Inserting margin note..."));
                bv->hideCursor();
-               bv->update(BufferView::SELECT|BufferView::FITCUR);
+               bv->update(bv->text, BufferView::SELECT|BufferView::FITCUR);
                bv->text->InsertFootnoteEnvironment(bv, LyXParagraph::MARGIN);
-               bv->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
+               bv->update(bv->text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
        }
 }
 #endif
@@ -108,10 +106,10 @@ void Melt(BufferView * bv)
        
        bv->owner()->getMiniBuffer()->Set(_("Melt"));
        bv->hideCursor();
-       bv->beforeChange();
-       bv->update(BufferView::SELECT|BufferView::FITCUR);
+       bv->beforeChange(bv->text);
+       bv->update(bv->text, BufferView::SELECT|BufferView::FITCUR);
        bv->text->MeltFootnoteEnvironment(bv);
-       bv->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
+       bv->update(bv->text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
 }
 #endif
 
@@ -127,29 +125,26 @@ void Tex(BufferView * bv)
 // Change environment depth.
 // if decInc >= 0, increment depth
 // if decInc <  0, decrement depth
-void changeDepth(BufferView * bv, int decInc)
+void changeDepth(BufferView * bv, LyXText * text, int decInc)
 {
-       if (!bv->available()) return;
+       if (!bv->available() || !text)
+           return;
        
        bv->hideCursor();
-       bv->update(BufferView::SELECT|BufferView::FITCUR);
+       bv->update(bv->text, BufferView::SELECT|BufferView::FITCUR);
        if (decInc >= 0)
-               bv->text->IncDepth(bv);
+               text->IncDepth(bv);
        else
-               bv->text->DecDepth(bv);
-       bv->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
+               text->DecDepth(bv);
+       if (text->inset_owner)
+           bv->updateInset((Inset *)text->inset_owner, true);
+       bv->update(bv->text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
        bv->owner()->getMiniBuffer()
                ->Set(_("Changed environment depth"
                        " (in possible range, maybe not)"));
 }
 
 
-void Free(BufferView * bv)
-{
-       ToggleAndShow(bv, UserFreeFont(bv->buffer()->params));
-}
-
-
 // How should this actually work? Should it prohibit input in all BufferViews,
 // or just in the current one? If "just the current one", then it should be
 // placed in BufferView. If "all BufferViews" then LyXGUI (I think) should
@@ -174,11 +169,6 @@ void ProhibitInput(BufferView * bv)
        XDefineCursor(fl_get_display(), bv->owner()->getForm()->window, 
                      cursor);
 
-       if (fd_form_character->form_character->visible)
-               XDefineCursor(fl_get_display(),
-                             fd_form_character->form_character->window,
-                             cursor);
-
        XFlush(fl_get_display());
        fl_deactivate_all_forms();
 }
@@ -190,10 +180,6 @@ void AllowInput(BufferView * bv)
    
        XUndefineCursor(fl_get_display(), bv->owner()->getForm()->window);
 
-       if (fd_form_character->form_character->visible)
-               XUndefineCursor(fl_get_display(),
-                               fd_form_character->form_character->window);
-
        XFlush(fl_get_display());
        fl_activate_all_forms();
 }
@@ -241,7 +227,7 @@ void Underline(BufferView * bv)
 void FontSize(BufferView * bv, string const & size)
 {
        LyXFont font(LyXFont::ALL_IGNORE);
-       font.setGUISize(size);
+       font.setLyXSize(size);
        ToggleAndShow(bv, font);
 }
 
@@ -253,13 +239,7 @@ string const CurrentState(BufferView * bv)
        if (bv->available()) { 
                // I think we should only show changes from the default
                // font. (Asger)
-               LyXText *text = 0;
-
-               if (bv->theLockingInset())
-                   text = bv->theLockingInset()->getLyXText(bv);
-               if (!text)
-                   text = bv->text;
-
+               LyXText * text = bv->getLyXText();
                Buffer * buffer = bv->buffer();
                LyXFont font = text->real_current_font;
                LyXFont const & defaultfont =
@@ -274,9 +254,9 @@ string const CurrentState(BufferView * bv)
                        state += string(_(", Depth: ")) + tostr(depth);
                // The paragraph spacing, but only if different from
                // buffer spacing.
-               if (!text->cursor.par()->spacing.isDefault()) {
+               if (!text->cursor.par()->params.spacing().isDefault()) {
                        Spacing::Space cur_space =
-                               text->cursor.par()->spacing.getSpace();
+                               text->cursor.par()->params.spacing().getSpace();
                        state += _(", Spacing: ");
                        switch (cur_space) {
                        case Spacing::Single:
@@ -290,7 +270,7 @@ string const CurrentState(BufferView * bv)
                                break;
                        case Spacing::Other:
                                state += _("Other (");
-                               state += tostr(text->cursor.par()->spacing.getValue());
+                               state += tostr(text->cursor.par()->params.spacing().getValue());
                                state += ")";
                                break;
                        case Spacing::Default:
@@ -306,21 +286,19 @@ string const CurrentState(BufferView * bv)
 /* -------> Does the actual toggle job of the XxxCB() calls above.
  * Also shows the current font state.
  */
-void ToggleAndShow(BufferView * bv, LyXFont const & font)
+void ToggleAndShow(BufferView * bv, LyXFont const & font, bool toggleall)
 {
        if (bv->available()) { 
+               LyXText * text = bv->getLyXText();
+
                bv->hideCursor();
-               bv->update(BufferView::SELECT|BufferView::FITCUR);
-               if (bv->theLockingInset())
-                       bv->theLockingInset()->SetFont(bv, font, toggleall);
-               else
-                       bv->text->ToggleFree(bv, font, toggleall);
-               bv->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
+               bv->update(text, BufferView::SELECT|BufferView::FITCUR);
+               text->ToggleFree(bv, font, toggleall);
+               bv->update(text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
 
                if (font.language() != ignore_language ||
                    font.latex() != LyXFont::IGNORE ||
                    font.number() != LyXFont::IGNORE) {
-                       LyXText * text = bv->text;
                        LyXCursor & cursor = text->cursor;
                        text->ComputeBidiTables(bv->buffer(), cursor.row());
                        if (cursor.boundary() !=