summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoberto Raggi <roberto.raggi@nokia.com>2009-11-20 15:07:10 +0100
committerRoberto Raggi <roberto.raggi@nokia.com>2009-11-20 15:09:39 +0100
commite2925540675b3c723f46f4f6a21a0cbf3dff26ad (patch)
tree5e0a53dfd259ca07676ef7e1dea0487923c453ed
parente2cfc0958e6d409a1eae00add67251cedc9c532c (diff)
downloadqt-creator-e2925540675b3c723f46f4f6a21a0cbf3dff26ad.tar.gz
Fixed possible crash when using tab to complete (Qt/Carbon only).
Task-number: QTCREATORBUG-199 Reviewed-by: thorbjorn
-rw-r--r--src/plugins/texteditor/completionwidget.cpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/plugins/texteditor/completionwidget.cpp b/src/plugins/texteditor/completionwidget.cpp
index e4f7c97b80..7cdbac8577 100644
--- a/src/plugins/texteditor/completionwidget.cpp
+++ b/src/plugins/texteditor/completionwidget.cpp
@@ -139,7 +139,16 @@ bool CompletionWidget::event(QEvent *e)
bool forwardKeys = true;
if (e->type() == QEvent::FocusOut) {
- closeList();
+ QModelIndex index;
+#if defined(Q_OS_DARWIN) && ! defined(QT_MAC_USE_COCOA)
+ QFocusEvent *fe = static_cast<QFocusEvent *>(e);
+ if (fe->reason() == Qt::OtherFocusReason) {
+ // Qt/carbon workaround
+ // focus out is received before the key press event.
+ index = currentIndex();
+ }
+#endif
+ closeList(index);
return true;
} else if (e->type() == QEvent::KeyPress) {
QKeyEvent *ke = static_cast<QKeyEvent *>(e);
@@ -153,7 +162,8 @@ bool CompletionWidget::event(QEvent *e)
case Qt::Key_Tab:
case Qt::Key_Return:
//independently from style, accept current entry if return is pressed
- closeList(currentIndex());
+ if (qApp->focusWidget() == this)
+ closeList(currentIndex());
return true;
case Qt::Key_Up:
if (currentIndex().row() == 0) {