]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/GuiCompleter.cpp
Fix the tab ordering of GuiDocument components.
[lyx.git] / src / frontends / qt4 / GuiCompleter.cpp
index 4f59d50309bbd4df230405052d24d5483c810cbd..da2d688c59688e90892a7ef407a5928f6cb83542 100644 (file)
@@ -17,7 +17,6 @@
 #include "CompletionList.h"
 #include "Cursor.h"
 #include "Dimension.h"
-#include "FuncRequest.h"
 #include "GuiWorkArea.h"
 #include "GuiView.h"
 #include "LyX.h"
@@ -163,7 +162,7 @@ GuiCompleter::GuiCompleter(GuiWorkArea * gui, QObject * parent)
        model_ = new GuiCompletionModel(this, 0);
        setModel(model_);
        setCompletionMode(QCompleter::PopupCompletion);
-       setCaseSensitivity(Qt::CaseInsensitive);
+       setCaseSensitivity(Qt::CaseSensitive);
        setWidget(gui_);
        
        // create the popup
@@ -312,10 +311,10 @@ void GuiCompleter::updateVisibility(Cursor & cur, bool start, bool keep, bool cu
        if (!inlineVisible() && possibleInlineState && start
                && cur.inset().automaticInlineCompletion())
                inline_timer_.start(int(lyxrc.completion_inline_delay * 1000));
-       else {
+       else if (cur.inMathed() && !lyxrc.completion_inline_math) {
                // no inline completion, hence a metrics update is needed
-               if (!(cur.result().update() & Update::Force))
-                       cur.updateFlags(cur.result().update() | Update::SinglePar);
+               if (!(cur.result().screenUpdate() & Update::Force))
+                       cur.screenUpdateFlags(cur.result().screenUpdate() | Update::SinglePar);
        }
 
        // update prefix if any completion is possible
@@ -332,12 +331,12 @@ void GuiCompleter::updateVisibility(Cursor & cur, bool start, bool keep, bool cu
 void GuiCompleter::updateVisibility(bool start, bool keep)
 {
        Cursor cur = gui_->bufferView().cursor();
-       cur.updateFlags(Update::None);
+       cur.screenUpdateFlags(Update::None);
        
        updateVisibility(cur, start, keep);
        
-       if (cur.result().update())
-               gui_->bufferView().processUpdateFlags(cur.result().update());
+       if (cur.result().screenUpdate())
+               gui_->bufferView().processUpdateFlags(cur.result().screenUpdate());
 }
 
 
@@ -596,52 +595,52 @@ void GuiCompleter::asyncHideInline()
 void GuiCompleter::showPopup()
 {
        Cursor cur = gui_->bufferView().cursor();
-       cur.updateFlags(Update::None);
+       cur.screenUpdateFlags(Update::None);
        
        showPopup(cur);
 
        // redraw if needed
-       if (cur.result().update())
-               gui_->bufferView().processUpdateFlags(cur.result().update());
+       if (cur.result().screenUpdate())
+               gui_->bufferView().processUpdateFlags(cur.result().screenUpdate());
 }
 
 
 void GuiCompleter::showInline()
 {
        Cursor cur = gui_->bufferView().cursor();
-       cur.updateFlags(Update::None);
+       cur.screenUpdateFlags(Update::None);
        
        showInline(cur);
 
        // redraw if needed
-       if (cur.result().update())
-               gui_->bufferView().processUpdateFlags(cur.result().update());
+       if (cur.result().screenUpdate())
+               gui_->bufferView().processUpdateFlags(cur.result().screenUpdate());
 }
 
 
 void GuiCompleter::hidePopup()
 {
        Cursor cur = gui_->bufferView().cursor();
-       cur.updateFlags(Update::None);
+       cur.screenUpdateFlags(Update::None);
        
        hidePopup(cur);
        
        // redraw if needed
-       if (cur.result().update())
-               gui_->bufferView().processUpdateFlags(cur.result().update());
+       if (cur.result().screenUpdate())
+               gui_->bufferView().processUpdateFlags(cur.result().screenUpdate());
 }
 
 
 void GuiCompleter::hideInline()
 {
        Cursor cur = gui_->bufferView().cursor();
-       cur.updateFlags(Update::None);
+       cur.screenUpdateFlags(Update::None);
        
        hideInline(cur);
        
        // redraw if needed
-       if (cur.result().update())
-               gui_->bufferView().processUpdateFlags(cur.result().update());
+       if (cur.result().screenUpdate())
+               gui_->bufferView().processUpdateFlags(cur.result().screenUpdate());
 }
 
 
@@ -658,7 +657,7 @@ void GuiCompleter::tab()
 {
        BufferView * bv = &gui_->bufferView();
        Cursor cur = bv->cursor();
-       cur.updateFlags(Update::None);
+       cur.screenUpdateFlags(Update::None);
        
        // check that inline completion is active
        if (!inlineVisible() && !uniqueCompletionAvailable()) {
@@ -684,6 +683,7 @@ void GuiCompleter::tab()
        }
        
        // Make undo possible
+       cur.beginUndoGroup();
        cur.recordUndo();
 
        // If completion is active, at least complete by one character
@@ -697,11 +697,14 @@ void GuiCompleter::tab()
                hidePopup(cur);
                hideInline(cur);
                updateVisibility(false, false);
+               cur.endUndoGroup();
                return;
        }
        docstring nextchar = completion.substr(prefix.size(), 1);
-       if (!cur.inset().insertCompletion(cur, nextchar, false))
+       if (!cur.inset().insertCompletion(cur, nextchar, false)) {
+               cur.endUndoGroup();
                return;
+       }
        updatePrefix(cur);
 
        // try to complete as far as it is unique
@@ -719,8 +722,9 @@ void GuiCompleter::tab()
                popup_timer_.start(0);
 
        // redraw if needed
-       if (cur.result().update())
-               gui_->bufferView().processUpdateFlags(cur.result().update());
+       if (cur.result().screenUpdate())
+               gui_->bufferView().processUpdateFlags(cur.result().screenUpdate());
+       cur.endUndoGroup();
 }
 
 
@@ -875,8 +879,9 @@ docstring GuiCompleter::longestUniqueCompletion() const
 void GuiCompleter::popupActivated(const QString & completion)
 {
        Cursor cur = gui_->bufferView().cursor();
-       cur.updateFlags(Update::None);
-       
+       cur.screenUpdateFlags(Update::None);
+
+       cur.beginUndoGroup();
        cur.recordUndo();
 
        docstring prefix = cur.inset().completionPrefix(cur);
@@ -885,8 +890,9 @@ void GuiCompleter::popupActivated(const QString & completion)
        hidePopup(cur);
        hideInline(cur);
        
-       if (cur.result().update())
-               gui_->bufferView().processUpdateFlags(cur.result().update());
+       if (cur.result().screenUpdate())
+               gui_->bufferView().processUpdateFlags(cur.result().screenUpdate());
+       cur.endUndoGroup();
 }
 
 
@@ -896,13 +902,13 @@ void GuiCompleter::popupHighlighted(const QString & completion)
                return;
 
        Cursor cur = gui_->bufferView().cursor();
-       cur.updateFlags(Update::None);
+       cur.screenUpdateFlags(Update::None);
        
        if (inlineVisible())
                updateInline(cur, completion);
        
-       if (cur.result().update())
-               gui_->bufferView().processUpdateFlags(cur.result().update());
+       if (cur.result().screenUpdate())
+               gui_->bufferView().processUpdateFlags(cur.result().screenUpdate());
 }
 
 } // namespace frontend