summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@digia.com>2013-06-25 18:48:43 +0200
committerEike Ziller <eike.ziller@digia.com>2013-06-26 09:31:30 +0200
commit0855d4acfa65de088e7b780f6bb6a3c6b28cacba (patch)
treef16c4140456fb1190159b90be15a442b79d5d4b2 /src
parent1fd1bf981eedac6dcd3fdc792540268978a5b558 (diff)
downloadqt-creator-0855d4acfa65de088e7b780f6bb6a3c6b28cacba.tar.gz
Workaround QCompleter issue with closing its popup on escape
QCompleter doesn't close its popup if there's a application wide 'escape' shortcut. This commit adds the necessary shortcut overrides for CompletingTextEdit and FancyLineEdit, which fixes the issue at least for find tool bar, advanced search, gerrit dialog and description field of submit editor. Task-number: QTCREATORBUG-9453 Change-Id: Ib1df218ab6b9a54fbf19d6132c6edd8e83ace46c Reviewed-by: Orgad Shaneh <orgads@gmail.com> Reviewed-by: Eike Ziller <eike.ziller@digia.com>
Diffstat (limited to 'src')
-rw-r--r--src/libs/utils/completingtextedit.cpp14
-rw-r--r--src/libs/utils/completingtextedit.h2
-rw-r--r--src/libs/utils/fancylineedit.cpp22
-rw-r--r--src/libs/utils/fancylineedit.h7
4 files changed, 41 insertions, 4 deletions
diff --git a/src/libs/utils/completingtextedit.cpp b/src/libs/utils/completingtextedit.cpp
index f32dcbbf88..77f061c7b4 100644
--- a/src/libs/utils/completingtextedit.cpp
+++ b/src/libs/utils/completingtextedit.cpp
@@ -190,6 +190,20 @@ void CompletingTextEdit::focusInEvent(QFocusEvent *e)
QTextEdit::focusInEvent(e);
}
+bool CompletingTextEdit::event(QEvent *e)
+{
+ // workaround for QTCREATORBUG-9453
+ if (e->type() == QEvent::ShortcutOverride && completer()
+ && completer()->popup() && completer()->popup()->isVisible()) {
+ QKeyEvent *ke = static_cast<QKeyEvent *>(e);
+ if (ke->key() == Qt::Key_Escape && !ke->modifiers()) {
+ ke->accept();
+ return true;
+ }
+ }
+ return QTextEdit::event(e);
+}
+
} // namespace Utils
#include "moc_completingtextedit.cpp"
diff --git a/src/libs/utils/completingtextedit.h b/src/libs/utils/completingtextedit.h
index 17b4600ee1..f7ece3e47e 100644
--- a/src/libs/utils/completingtextedit.h
+++ b/src/libs/utils/completingtextedit.h
@@ -36,6 +36,7 @@
QT_BEGIN_NAMESPACE
class QCompleter;
+class QEvent;
QT_END_NAMESPACE
namespace Utils {
@@ -59,6 +60,7 @@ public:
protected:
void keyPressEvent(QKeyEvent *e);
void focusInEvent(QFocusEvent *e);
+ bool event(QEvent *e);
private:
class CompletingTextEditPrivate *d;
diff --git a/src/libs/utils/fancylineedit.cpp b/src/libs/utils/fancylineedit.cpp
index 489d3022ce..4df20ce614 100644
--- a/src/libs/utils/fancylineedit.cpp
+++ b/src/libs/utils/fancylineedit.cpp
@@ -31,13 +31,15 @@
#include "historycompleter.h"
#include "qtcassert.h"
-#include <QDebug>
-#include <QPropertyAnimation>
+#include <QAbstractItemView>
#include <QApplication>
+#include <QDebug>
+#include <QDesktopWidget>
+#include <QKeyEvent>
#include <QMenu>
#include <QPainter>
+#include <QPropertyAnimation>
#include <QStyle>
-#include <QDesktopWidget>
/*! Opens a menu at the specified widget position.
* This functions computes the position where to show the menu, and opens it with
@@ -251,6 +253,20 @@ void FancyLineEdit::resizeEvent(QResizeEvent *)
updateButtonPositions();
}
+bool FancyLineEdit::event(QEvent *e)
+{
+ // workaround for QTCREATORBUG-9453
+ if (e->type() == QEvent::ShortcutOverride && completer()
+ && completer()->popup() && completer()->popup()->isVisible()) {
+ QKeyEvent *ke = static_cast<QKeyEvent *>(e);
+ if (ke->key() == Qt::Key_Escape && !ke->modifiers()) {
+ ke->accept();
+ return true;
+ }
+ }
+ return QLineEdit::event(e);
+}
+
void FancyLineEdit::setButtonPixmap(Side side, const QPixmap &buttonPixmap)
{
d->m_iconbutton[side]->setPixmap(buttonPixmap);
diff --git a/src/libs/utils/fancylineedit.h b/src/libs/utils/fancylineedit.h
index 3d08eb1485..fec5dced30 100644
--- a/src/libs/utils/fancylineedit.h
+++ b/src/libs/utils/fancylineedit.h
@@ -35,6 +35,10 @@
#include <QLineEdit>
#include <QAbstractButton>
+QT_BEGIN_NAMESPACE
+class QEvent;
+QT_END_NAMESPACE
+
namespace Utils {
class FancyLineEditPrivate;
@@ -109,7 +113,8 @@ private slots:
void iconClicked();
protected:
- virtual void resizeEvent(QResizeEvent *e);
+ void resizeEvent(QResizeEvent *e);
+ bool event(QEvent *e);
private:
// Unimplemented, to force the user to make a decision on