aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/locator/locatorwidget.cpp
diff options
context:
space:
mode:
authorDavid Schulz <david.schulz@nokia.com>2012-01-17 15:47:28 +0100
committerEike Ziller <eike.ziller@nokia.com>2012-01-18 09:39:16 +0100
commitc80ec5513c7efb11b89f8a15fe91ece766f550a4 (patch)
treecdef6d336b822f92d3debf8bf3009b2fa3c0f53f /src/plugins/locator/locatorwidget.cpp
parent2ac162dd2f2565c0b52b2b143e3788fbe22fd1c1 (diff)
fix for locator using up and down keys under mac
Fixes the issue that you cannot switch elements by the up- and downkey in the locator under mac. Task-number: QTCREATORBUG-6826 Change-Id: I452bb487608fad3b32c845036939f02e9cf4b3b6 Reviewed-by: Eike Ziller <eike.ziller@nokia.com>
Diffstat (limited to 'src/plugins/locator/locatorwidget.cpp')
-rw-r--r--src/plugins/locator/locatorwidget.cpp112
1 files changed, 53 insertions, 59 deletions
diff --git a/src/plugins/locator/locatorwidget.cpp b/src/plugins/locator/locatorwidget.cpp
index 944af8e6e8..7b600fd5cd 100644
--- a/src/plugins/locator/locatorwidget.cpp
+++ b/src/plugins/locator/locatorwidget.cpp
@@ -401,7 +401,59 @@ void LocatorWidget::updateFilterList()
bool LocatorWidget::eventFilter(QObject *obj, QEvent *event)
{
- if (obj == m_fileLineEdit && event->type() == QEvent::FocusOut) {
+ if (obj == m_fileLineEdit && event->type() == QEvent::KeyPress) {
+ if (m_possibleToolTipRequest)
+ m_possibleToolTipRequest = false;
+ if (QToolTip::isVisible())
+ QToolTip::hideText();
+
+ QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);
+ switch (keyEvent->key()) {
+ case Qt::Key_Up:
+ case Qt::Key_Down:
+ case Qt::Key_PageUp:
+ case Qt::Key_PageDown:
+ showCompletionList();
+ QApplication::sendEvent(m_completionList, event);
+ return true;
+ case Qt::Key_Enter:
+ case Qt::Key_Return:
+ scheduleAcceptCurrentEntry();
+ return true;
+ case Qt::Key_Escape:
+ m_completionList->hide();
+ return true;
+ case Qt::Key_Tab:
+ m_completionList->next();
+ return true;
+ case Qt::Key_Backtab:
+ m_completionList->previous();
+ return true;
+ case Qt::Key_Alt:
+ if (keyEvent->modifiers() == Qt::AltModifier) {
+ m_possibleToolTipRequest = true;
+ return true;
+ }
+ break;
+ default:
+ break;
+ }
+ } else if (obj == m_fileLineEdit && event->type() == QEvent::KeyRelease) {
+ QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);
+ if (m_possibleToolTipRequest) {
+ m_possibleToolTipRequest = false;
+ if (m_completionList->isVisible()
+ && (keyEvent->key() == Qt::Key_Alt)
+ && (keyEvent->modifiers() == Qt::NoModifier)) {
+ const QModelIndex index = m_completionList->currentIndex();
+ if (index.isValid()) {
+ QToolTip::showText(m_completionList->pos() + m_completionList->visualRect(index).topRight(),
+ m_locatorModel->data(index, Qt::ToolTipRole).toString());
+ return true;
+ }
+ }
+ }
+ } else if (obj == m_fileLineEdit && event->type() == QEvent::FocusOut) {
#if defined(Q_OS_WIN)
QFocusEvent *fev = static_cast<QFocusEvent*>(event);
if (fev->reason() != Qt::ActiveWindowFocusReason ||
@@ -432,64 +484,6 @@ bool LocatorWidget::eventFilter(QObject *obj, QEvent *event)
return QWidget::eventFilter(obj, event);
}
-void LocatorWidget::keyPressEvent(QKeyEvent *keyEvent)
-{
- if (QToolTip::isVisible())
- QToolTip::hideText();
- if (m_possibleToolTipRequest)
- m_possibleToolTipRequest = false;
-
- switch (keyEvent->key()) {
- case Qt::Key_Up:
- case Qt::Key_Down:
- case Qt::Key_PageUp:
- case Qt::Key_PageDown:
- showCompletionList();
- QApplication::sendEvent(m_completionList, keyEvent);
- return;
- case Qt::Key_Enter:
- case Qt::Key_Return:
- scheduleAcceptCurrentEntry();
- return;
- case Qt::Key_Escape:
- m_completionList->hide();
- return;
- case Qt::Key_Tab:
- m_completionList->next();
- return;
- case Qt::Key_Backtab:
- m_completionList->previous();
- return;
- case Qt::Key_Alt:
- if (keyEvent->modifiers() == Qt::AltModifier) {
- m_possibleToolTipRequest = true;
- return;
- }
- break;
- default:
- break;
- }
- QWidget::keyPressEvent(keyEvent);
-}
-
-void LocatorWidget::keyReleaseEvent(QKeyEvent *keyEvent)
-{
- if (m_possibleToolTipRequest) {
- m_possibleToolTipRequest = false;
- if (m_completionList->isVisible()
- && (keyEvent->key() == Qt::Key_Alt)
- && (keyEvent->modifiers() == Qt::NoModifier)) {
- const QModelIndex index = m_completionList->currentIndex();
- if (index.isValid()) {
- QToolTip::showText(m_completionList->pos() + m_completionList->visualRect(index).topRight(),
- m_locatorModel->data(index, Qt::ToolTipRole).toString());
- return;
- }
- }
- }
- QWidget::keyReleaseEvent(keyEvent);
-}
-
void LocatorWidget::showCompletionList()
{
const int border = m_completionList->frameWidth();