]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/GuiSelectionManager.cpp
Allow Ctrl+Enter in GuiCitation even if the citation is already there
[lyx.git] / src / frontends / qt4 / GuiSelectionManager.cpp
index 90f90731c56bfb050b885beb0fffc19bf1935dfb..eeba9372f0ef73d4205863e7ed0399884722fed1 100644 (file)
@@ -15,6 +15,7 @@
 #include <config.h>
 
 #include "GuiSelectionManager.h"
+#include "qt_helpers.h"
 
 #include "support/debug.h"
 
@@ -389,27 +390,32 @@ bool GuiSelectionManager::eventFilter(QObject * obj, QEvent * event)
                        // This is designed to work both with the main enter key
                        // and the one on the numeric keypad.
                        if (keyPressed == Qt::Key_Enter || keyPressed == Qt::Key_Return) {
-                               if (addPB->isEnabled()) {
-                                       if (!keyModifiers) {
+                               if (!keyModifiers ||
+                                   keyModifiers == Qt::ControlModifier ||
+                                   keyModifiers == Qt::KeypadModifier  ||
+                                   keyModifiers == (Qt::ControlModifier
+                                                    | Qt::KeypadModifier)) {
+                                       if (addPB->isEnabled()) {
                                                addPB_clicked();
-                                       } else if (keyModifiers == Qt::ControlModifier || 
-                                                 keyModifiers == Qt::KeypadModifier  ||
-                                                 keyModifiers == (Qt::ControlModifier | Qt::KeypadModifier)) {
-                                               addPB_clicked();
-                                               okHook(); //signal
                                        }
+                                       if (keyModifiers)
+                                               okHook(); //signal
                                }
                                event->accept();
                                return true;
                        }
+                       else if (keyPressed == Qt::Key_Right) {
+                               focusAndHighlight(selectedLV);
+                               event->accept();
+                               return true;
+                       }
                } else if (etype == QEvent::FocusIn) {
                        if (selectedHasFocus_) {
                                selectedHasFocus_ = false;
                                updateHook();
                        }
-                       event->accept();
-                       return true;
-               } 
+                       return false;
+               }
        } else if (obj == selectedLV) {
                if (etype == QEvent::KeyPress) {
                        QKeyEvent * keyEvent = static_cast<QKeyEvent *>(event);
@@ -426,7 +432,7 @@ bool GuiSelectionManager::eventFilter(QObject * obj, QEvent * event)
                                        updateHook();
                                } else
                                        return QObject::eventFilter(obj, event);
-                       } 
+                       }
                        // Ctrl-Up activates upPB
                        else if (keyPressed == Qt::Key_Up) {
                                if (keyModifiers == Qt::ControlModifier) {
@@ -435,7 +441,7 @@ bool GuiSelectionManager::eventFilter(QObject * obj, QEvent * event)
                                        event->accept();
                                        return true;
                                }
-                       } 
+                       }
                        // Ctrl-Down activates downPB
                        else if (keyPressed == Qt::Key_Down) {
                                if (keyModifiers == Qt::ControlModifier) {
@@ -445,13 +451,17 @@ bool GuiSelectionManager::eventFilter(QObject * obj, QEvent * event)
                                        return true;
                                }
                        }
+                       else if (keyPressed == Qt::Key_Left) {
+                               focusAndHighlight(availableLV);
+                               event->accept();
+                               return true;
+                       }
                } else if (etype == QEvent::FocusIn) {
                        if (!selectedHasFocus_) {
                                selectedHasFocus_ = true;
                                updateHook();
                        }
-                       event->accept();
-                       return true;
+                       return false;
                }
        }
        return QObject::eventFilter(obj, event);