]> git.lyx.org Git - features.git/commitdiff
Fix handling of the add branch textfield in GuiBranches
authorVincent van Ravesteijn <vfr@lyx.org>
Sat, 3 Mar 2012 14:39:32 +0000 (14:39 +0000)
committerVincent van Ravesteijn <vfr@lyx.org>
Sat, 3 Mar 2012 14:39:32 +0000 (14:39 +0000)
- Enter in the textfield adds the branch,
- Make sure the dialog is not closed when pressing enter,
- Pressing Ctrl+Enter or the Enter on the numpad closes the dialog.

Patch based on a patch from Scott Kostyshak.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@40839 a592a061-630c-0410-9148-cb99ea01b6c8

src/frontends/qt4/GuiBranches.cpp
src/frontends/qt4/GuiBranches.h
src/frontends/qt4/GuiDocument.cpp
src/frontends/qt4/ui/BranchesUi.ui

index c79a42def221ba4cc45b4d27325ff88ee1b8dad6..9c59f125e4b61fe052084ce4df56399cde99e7be 100644 (file)
@@ -28,6 +28,7 @@
 #include "support/gettext.h"
 #include "support/lstrings.h"
 
+#include <QKeyEvent>
 #include <QListWidget>
 #include <QTreeWidget>
 #include <QTreeWidgetItem>
@@ -71,9 +72,39 @@ GuiBranches::GuiBranches(QWidget * parent)
        connect(undef_->cancelPB, SIGNAL(clicked()),
                undef_, SLOT(reject()));
 
+       newBranchLE->installEventFilter(this);
        newBranchLE->setValidator(new NoNewLineValidator(newBranchLE));
 }
 
+
+bool GuiBranches::eventFilter(QObject * obj, QEvent * event) 
+{
+       QEvent::Type etype = event->type();
+       if (etype == QEvent::KeyPress 
+                 && obj == newBranchLE
+                 && addBranchPB->isEnabled()) {
+               QKeyEvent * keyEvent = static_cast<QKeyEvent *>(event);
+               int const keyPressed = keyEvent->key();
+               Qt::KeyboardModifiers const keyModifiers = keyEvent->modifiers();
+
+               if (keyPressed == Qt::Key_Enter || keyPressed == Qt::Key_Return) {
+                       if (!keyModifiers) {
+                               on_addBranchPB_pressed();
+                       } else if (keyModifiers == Qt::ControlModifier
+                                 || keyModifiers == Qt::KeypadModifier
+                                 || keyModifiers == (Qt::ControlModifier | Qt::KeypadModifier)) {
+                               on_addBranchPB_pressed();
+                               newBranchLE->clearFocus();
+                               okPressed();
+                       }
+                       event->accept();
+                       return true;
+               }
+       }
+       return QObject::eventFilter(obj, event);
+}
+
+
 void GuiBranches::update(BufferParams const & params)
 {
        branchlist_ = params.branchlist();
@@ -132,14 +163,20 @@ void GuiBranches::apply(BufferParams & params) const
 }
 
 
+void GuiBranches::on_newBranchLE_textChanged(QString)
+{
+       QString const new_branch = newBranchLE->text();
+       addBranchPB->setEnabled(!new_branch.isEmpty());
+}
+
+
 void GuiBranches::on_addBranchPB_pressed()
 {
        QString const new_branch = newBranchLE->text();
-       if (!new_branch.isEmpty()) {
-               branchlist_.add(qstring_to_ucs4(new_branch));
-               newBranchLE->clear();
-               updateView();
-       }
+       branchlist_.add(qstring_to_ucs4(new_branch));
+       newBranchLE->clear();
+       addBranchPB->setEnabled(false);
+       updateView();
 }
 
 
index 803a7017ee6872c1014fab72b7f9ae3691edda15..fc29167cd019fed1a512e409db24e909a2493505 100644 (file)
@@ -49,9 +49,12 @@ public:
        void apply(BufferParams & params) const;
        void setUnknownBranches(QStringList const & b) { unknown_branches_ = b; }
 
+       bool eventFilter(QObject * obj, QEvent * event);
+
 Q_SIGNALS:
        void changed();
        void renameBranches(docstring const &, docstring const &);
+       void okPressed();
 
 protected:
        void toggleBranch(QTreeWidgetItem *);
@@ -60,6 +63,7 @@ protected:
        void updateView();
 
 protected Q_SLOTS:
+       void on_newBranchLE_textChanged(QString);
        void on_addBranchPB_pressed();
        void on_removePB_pressed();
        void on_renamePB_pressed();
index a388a86c9fb492eef69a6fa491e50be33d8f9df1..aa33c8f81cd9537438c804c35e8ea43b6fa544ff 100644 (file)
@@ -1289,6 +1289,7 @@ GuiDocument::GuiDocument(GuiView & lv)
                this, SLOT(change_adaptor()));
        connect(branchesModule, SIGNAL(renameBranches(docstring const &, docstring const &)),
                this, SLOT(branchesRename(docstring const &, docstring const &)));
+       connect(branchesModule, SIGNAL(okPressed()), this, SLOT(slotOK()));
        updateUnknownBranches();
 
 
index d8e97e22e71d38668356c34f0ad617f52c8e34b8..4c83b18f16421354025c2531cc8c6737cfa7c646 100644 (file)
    </item>
    <item row="0" column="3" >
     <widget class="QPushButton" name="addBranchPB" >
+     <property name="enabled">
+      <bool>false</bool>
+     </property>
      <property name="toolTip" >
       <string>Add a new branch to the list</string>
      </property>