diff options
author | Roberto Raggi <roberto.raggi@nokia.com> | 2009-11-20 15:07:10 +0100 |
---|---|---|
committer | con <qtc-committer@nokia.com> | 2009-11-23 10:01:11 +0100 |
commit | b300c1c42168e6a2873d94ff24fae37e75523cd4 (patch) | |
tree | 2bea1f5edff65747925d2a1f19ef7c032adcebbc | |
parent | ca6d7f8a2a604bf939e249f3bc8ceef647a58075 (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.cpp | 14 |
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) { |