]> git.lyx.org Git - lyx.git/blobdiff - src/BufferView_pimpl.C
Added new FINISED states FINISHED_RIGHT, FINISHED_UP, FINISHED_DOWN.
[lyx.git] / src / BufferView_pimpl.C
index 4cef48be677264074bc672c45050216313caa1e5..d5d677604bc1c0ece3e9d1feb0432a92dc56c589 100644 (file)
@@ -67,7 +67,6 @@
 #include "mathed/formulabase.h"
 
 extern LyXTextClass::size_type current_layout;
-extern int greek_kb_flag;
 
 using std::vector;
 using std::find_if;
@@ -85,7 +84,6 @@ bool selection_possible = false;
 extern BufferList bufferlist;
 extern char ascii_type;
 
-extern bool math_insert_greek(BufferView *, char);
 extern void sigchldchecker(pid_t pid, int * status);
 extern int bibitemMaxWidth(BufferView *, LyXFont const &);
 
@@ -891,7 +889,7 @@ Inset * BufferView::Pimpl::checkInsetHit(LyXText * text, int & x, int & y,
            (cursor.par()->getInset(cursor.pos() - 1)->editable())) {
                Inset * tmpinset = cursor.par()->getInset(cursor.pos()-1);
                LyXFont font = text->getFont(buffer_, cursor.par(),
-                                                 cursor.pos()-1);
+                                                 cursor.pos() - 1);
                int const width = tmpinset->width(bv_, font);
                int const inset_x = font.isVisibleRightToLeft()
                        ? cursor.x() : cursor.x() - width;
@@ -972,16 +970,22 @@ void BufferView::Pimpl::update()
        {
                LyXText::text_status st = bv_->text->status();
                screen_->update(bv_->text, bv_);
+               bool fitc = false;
                while(bv_->text->status() == LyXText::CHANGED_IN_DRAW) {
                        if (bv_->text->fullRebreak(bv_)) {
                                st = LyXText::NEED_MORE_REFRESH;
                                bv_->text->setCursor(bv_, bv_->text->cursor.par(),
                                                                         bv_->text->cursor.pos());
-                               fitCursor();
+                               fitc = true;
                        }
                        bv_->text->status(bv_, st);
                        screen_->update(bv_->text, bv_);
                }
+               // do this here instead of in the screen::update because of
+               // the above loop!
+               bv_->text->status(bv_, LyXText::UNCHANGED);
+               if (fitc)
+                       fitCursor();
        }
 }
 
@@ -1211,12 +1215,7 @@ void BufferView::Pimpl::setState()
                return;
 
        LyXText * text = bv_->getLyXText();
-       if (text->real_current_font.isRightToLeft()
-#ifndef NO_LATEX
-           &&
-           text->real_current_font.latex() != LyXFont::ON
-#endif
-               ) {
+       if (text->real_current_font.isRightToLeft()) {
                if (owner_->getIntl()->keymap == Intl::PRIMARY)
                        owner_->getIntl()->KeyMapSec();
        } else {
@@ -1598,14 +1597,6 @@ bool BufferView::Pimpl::Dispatch(kb_action action, string const & argument)
                owner_->getDialogs()->setUserFreeFont();
                break;
 
-#ifndef NO_LATEX
-       case LFUN_TEX:
-               Tex(bv_);
-               setState();
-               owner_->showState();
-               break;
-#endif
-               
        case LFUN_FILE_INSERT:
        {
                MenuInsertLyXFile(argument);
@@ -1668,58 +1659,58 @@ bool BufferView::Pimpl::Dispatch(kb_action action, string const & argument)
        break;
 
        case LFUN_LANGUAGE:
-               Lang(bv_, argument);
+               lang(bv_, argument);
                setState();
                owner_->showState();
                break;
 
        case LFUN_EMPH:
-               Emph(bv_);
+               emph(bv_);
                owner_->showState();
                break;
 
        case LFUN_BOLD:
-               Bold(bv_);
+               bold(bv_);
                owner_->showState();
                break;
                
        case LFUN_NOUN:
-               Noun(bv_);
+               noun(bv_);
                owner_->showState();
                break;
                
        case LFUN_CODE:
-               Code(bv_);
+               code(bv_);
                owner_->showState();
                break;
                
        case LFUN_SANS:
-               Sans(bv_);
+               sans(bv_);
                owner_->showState();
                break;
                
        case LFUN_ROMAN:
-               Roman(bv_);
+               roman(bv_);
                owner_->showState();
                break;
                
        case LFUN_DEFAULT:
-               StyleReset(bv_);
+               styleReset(bv_);
                owner_->showState();
                break;
                
        case LFUN_UNDERLINE:
-               Underline(bv_);
+               underline(bv_);
                owner_->showState();
                break;
                
        case LFUN_FONT_SIZE:
-               FontSize(bv_, argument);
+               fontSize(bv_, argument);
                owner_->showState();
                break;
                
        case LFUN_FONT_STATE:
-               owner_->getLyXFunc()->setMessage(CurrentState(bv_));
+               owner_->getLyXFunc()->setMessage(currentState(bv_));
                break;
                
        case LFUN_UPCASE_WORD:
@@ -2362,7 +2353,7 @@ bool BufferView::Pimpl::Dispatch(kb_action action, string const & argument)
                        // just comment out the line below...
                        showCursor();
                } else {
-                       bv_->cut();
+                       bv_->cut(false);
                }
                moveCursorUpdate(false);
                owner_->showState();
@@ -2418,7 +2409,7 @@ bool BufferView::Pimpl::Dispatch(kb_action action, string const & argument)
                                       | BufferView::CHANGE);
                        }
                } else {
-                       bv_->cut();
+                       bv_->cut(false);
                }
        }
        break;
@@ -2505,7 +2496,7 @@ bool BufferView::Pimpl::Dispatch(kb_action action, string const & argument)
                                showCursor();
                        }
                } else {
-                       bv_->cut();
+                       bv_->cut(false);
                }
                owner_->showState();
                setState();
@@ -2545,7 +2536,7 @@ bool BufferView::Pimpl::Dispatch(kb_action action, string const & argument)
                                       | BufferView::CHANGE);
                        }
                } else
-                       bv_->cut();
+                       bv_->cut(false);
        }
        break;
 
@@ -2859,18 +2850,6 @@ bool BufferView::Pimpl::Dispatch(kb_action action, string const & argument)
        }
        break;
 
-       case LFUN_GETLATEX:
-       {
-#ifndef NO_LATEX
-               LyXFont & font = bv_->getLyXText()->current_font;
-                if (font.latex() == LyXFont::ON)
-                       owner_->getLyXFunc()->setMessage("L");
-                else
-#endif
-                       owner_->getLyXFunc()->setMessage("0");
-       }
-       break;
-
        // --- accented characters ---------------------------
                
        case LFUN_UMLAUT:
@@ -3002,10 +2981,11 @@ bool BufferView::Pimpl::Dispatch(kb_action action, string const & argument)
                InsetCommandParams p("index");
                if (argument.empty()) {
                        string const idxstring(bv_->getLyXText()->getStringToIndex(bv_));
-                       if (!idxstring.empty()) 
+                       if (!idxstring.empty()) {
                                p.setContents(idxstring);
-                       else
+                       } else {
                                break;
+                       }
                } else {
                        p.setContents(argument);
                }
@@ -3123,7 +3103,7 @@ bool BufferView::Pimpl::Dispatch(kb_action action, string const & argument)
                
                if (lyxrc.auto_region_delete) {
                        if (lt->selection.set()) {
-                               lt->cutSelection(bv_, false);
+                               lt->cutSelection(bv_, false, false);
                                bv_->update(lt,
                                            BufferView::SELECT
                                            | BufferView::FITCUR
@@ -3137,11 +3117,7 @@ bool BufferView::Pimpl::Dispatch(kb_action action, string const & argument)
                string::const_iterator cit = argument.begin();
                string::const_iterator end = argument.end();
                for (; cit != end; ++cit) {
-                       if (greek_kb_flag) {
-                               if (!math_insert_greek(bv_, *cit))
-                                       owner_->getIntl()->getTrans().TranslateAndInsert(*cit, lt);
-                       } else
-                               owner_->getIntl()->getTrans().TranslateAndInsert(*cit, lt);
+                       owner_->getIntl()->getTrans().TranslateAndInsert(*cit, lt);
                }
                
                bv_->update(lt,
@@ -3281,7 +3257,13 @@ void BufferView::Pimpl::smartQuote()
                c = ' ';
 
        hideCursor();
-       if (!insertInset(new InsetQuotes(c, bv_->buffer()->params)))
+
+       LyXLayout const & style = textclasslist.Style(
+               bv_->buffer()->params.textclass,
+               lt->cursor.par()->getLayout());
+       
+       if (style.pass_thru ||
+               (!insertInset(new InsetQuotes(c, bv_->buffer()->params))))
                Dispatch(LFUN_SELFINSERT, "\"");
 }
 
@@ -3359,9 +3341,6 @@ bool BufferView::Pimpl::insertInset(Inset * inset, string const & lout)
                                   string(),
                                   0);
                update(bv_->text, BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE);
-#ifndef NO_LATEX
-               bv_->text->current_font.setLatex(LyXFont::OFF);
-#endif
        }
        
        bv_->text->insertInset(bv_, inset);