aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoberto Raggi <roberto.raggi@nokia.com>2009-11-20 15:07:10 +0100
committercon <qtc-committer@nokia.com>2009-11-23 10:01:11 +0100
commitb300c1c42168e6a2873d94ff24fae37e75523cd4 (patch)
tree2bea1f5edff65747925d2a1f19ef7c032adcebbc
parentca6d7f8a2a604bf939e249f3bc8ceef647a58075 (diff)
Fixed possible crash when using tab to complete (Qt/Carbon only).
Task-number: QTCREATORBUG-199 Reviewed-by: thorbjorn (cherry picked from commit e2925540675b3c723f46f4f6a21a0cbf3dff26ad)
-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) {