X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fqt4%2FGuiBranches.cpp;h=6910c5cadd231791e5bd5a69f5c6ec0b5480e9e7;hb=28be7d552f62cc02fa86d7f79201d089bfb2d7b5;hp=bf2c5242da7d257588522fc38572352f885f1740;hpb=29df3045280b3019ee4e8e0b404c7d3cf93aff63;p=lyx.git diff --git a/src/frontends/qt4/GuiBranches.cpp b/src/frontends/qt4/GuiBranches.cpp index bf2c5242da..6910c5cadd 100644 --- a/src/frontends/qt4/GuiBranches.cpp +++ b/src/frontends/qt4/GuiBranches.cpp @@ -28,6 +28,7 @@ #include "support/gettext.h" #include "support/lstrings.h" +#include #include #include #include @@ -36,6 +37,9 @@ #include #include +#ifdef KeyPress +#undef KeyPress +#endif namespace lyx { namespace frontend { @@ -70,8 +74,40 @@ GuiBranches::GuiBranches(QWidget * parent) undef_, SLOT(accept())); 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(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(); @@ -104,7 +140,7 @@ void GuiBranches::updateView() coloritem.fill(itemcolor); newItem->setIcon(2, QIcon(coloritem)); } - newItem->setText(3, it->hasFilenameSuffix() ? qt_("Yes") : qt_("No")); + newItem->setText(3, it->hasFileNameSuffix() ? qt_("Yes") : qt_("No")); // restore selected branch if (bname == sel_branch) { branchesTW->setCurrentItem(newItem); @@ -130,14 +166,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(); } @@ -164,10 +206,10 @@ void GuiBranches::on_renamePB_pressed() if (!sel_branch.isEmpty()) { docstring newname; docstring const oldname = qstring_to_ucs4(sel_branch); - bool success = false; if (Alert::askForText(newname, _("Enter new branch name"), oldname)) { if (newname.empty() || oldname == newname) return; + bool success = false; if (branchlist_.find(newname)) { docstring text = support::bformat( _("A branch with the name \"%1$s\" already exists.\n" @@ -287,7 +329,7 @@ void GuiBranches::toggleSuffix(QTreeWidgetItem * item) Branch * branch = branchlist_.find(qstring_to_ucs4(sel_branch)); if (branch) { - branch->setFilenameSuffix(!branch->hasFilenameSuffix()); + branch->setFileNameSuffix(!branch->hasFileNameSuffix()); newBranchLE->clear(); updateView(); }