]> git.lyx.org Git - lyx.git/blobdiff - src/bufferview_funcs.C
More fixes to insettabular/text (and some missing features added).
[lyx.git] / src / bufferview_funcs.C
index 66fc4c0a24cff883d815a59548bd26f2350c8f68..7130348ece2be60db4b4a85b16d967e877bc029d 100644 (file)
@@ -27,7 +27,6 @@
 #include "lyx_cb.h"
 #include "layout_forms.h"
 
-extern FD_form_paragraph * fd_form_paragraph;
 extern FD_form_character * fd_form_character;
 
 #ifndef NEW_INSETS
@@ -83,13 +82,19 @@ void Margin(BufferView * bv)
 }
 #endif
 
+void Number(BufferView * bv)
+{
+       LyXFont font(LyXFont::ALL_IGNORE);
+       font.setNumber(LyXFont::TOGGLE);
+       ToggleAndShow(bv, font);
+}
 
 void Lang(BufferView * bv, string const & l)
 {
        LyXFont font(LyXFont::ALL_IGNORE);
-       Languages::iterator lit = languages.find(l);
-       if (lit != languages.end()) {
-               font.setLanguage(&(*lit).second);
+       Language const * lang = languages.getLanguage(l);
+       if (lang) {
+               font.setLanguage(lang);
                ToggleAndShow(bv, font);
        } else
                WriteAlert(_("Error! unknown language"),l);
@@ -122,16 +127,19 @@ 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);
        if (decInc >= 0)
-               bv->text->IncDepth(bv);
+               text->IncDepth(bv);
        else
-               bv->text->DecDepth(bv);
+               text->DecDepth(bv);
+       if (text->inset_owner)
+           bv->updateInset((Inset *)text->inset_owner, true);
        bv->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
        bv->owner()->getMiniBuffer()
                ->Set(_("Changed environment depth"
@@ -160,24 +168,21 @@ void ProhibitInput(BufferView * bv)
        static bool cursor_undefined = true;
    
        if (cursor_undefined){
-               cursor = XCreateFontCursor(fl_display, XC_watch);
-               XFlush(fl_display);
+               cursor = XCreateFontCursor(fl_get_display(), XC_watch);
+               XFlush(fl_get_display());
                cursor_undefined = false;
        }
    
        /* set the cursor to the watch for all forms and the canvas */ 
-       XDefineCursor(fl_display, bv->owner()->getForm()->window, 
+       XDefineCursor(fl_get_display(), bv->owner()->getForm()->window, 
                      cursor);
-       if (fd_form_paragraph->form_paragraph->visible)
-               XDefineCursor(fl_display,
-                             fd_form_paragraph->form_paragraph->window,
-                             cursor);
+
        if (fd_form_character->form_character->visible)
-               XDefineCursor(fl_display,
+               XDefineCursor(fl_get_display(),
                              fd_form_character->form_character->window,
                              cursor);
 
-       XFlush(fl_display);
+       XFlush(fl_get_display());
        fl_deactivate_all_forms();
 }
 
@@ -186,15 +191,13 @@ void AllowInput(BufferView * bv)
 {
        /* reset the cursor from the watch for all forms and the canvas */
    
-       XUndefineCursor(fl_display, bv->owner()->getForm()->window);
-       if (fd_form_paragraph->form_paragraph->visible)
-               XUndefineCursor(fl_display,
-                               fd_form_paragraph->form_paragraph->window);
+       XUndefineCursor(fl_get_display(), bv->owner()->getForm()->window);
+
        if (fd_form_character->form_character->visible)
-               XUndefineCursor(fl_display,
+               XUndefineCursor(fl_get_display(),
                                fd_form_character->form_character->window);
 
-       XFlush(fl_display);
+       XFlush(fl_get_display());
        fl_activate_all_forms();
 }
 
@@ -241,7 +244,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 +256,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->the_locking_inset)
-                   text = bv->the_locking_inset->getLyXText(bv);
-               if (!text)
-                   text = bv->text;
-
+               LyXText * text = bv->getLyXText();
                Buffer * buffer = bv->buffer();
                LyXFont font = text->real_current_font;
                LyXFont const & defaultfont =
@@ -311,15 +308,16 @@ void ToggleAndShow(BufferView * bv, LyXFont const & font)
        if (bv->available()) { 
                bv->hideCursor();
                bv->update(BufferView::SELECT|BufferView::FITCUR);
-               if (bv->the_locking_inset)
-                       bv->the_locking_inset->SetFont(bv, font, toggleall);
+               if (bv->theLockingInset())
+                       bv->theLockingInset()->SetFont(bv, font, toggleall);
                else
                        bv->text->ToggleFree(bv, font, toggleall);
                bv->update(BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
 
                if (font.language() != ignore_language ||
-                   font.latex() != LyXFont::IGNORE) {
-                       LyXText * text = bv->text;
+                   font.latex() != LyXFont::IGNORE ||
+                   font.number() != LyXFont::IGNORE) {
+                       LyXText * text = bv->getLyXText();
                        LyXCursor & cursor = text->cursor;
                        text->ComputeBidiTables(bv->buffer(), cursor.row());
                        if (cursor.boundary() !=