diff --git a/src/plugins/texteditor/completionwidget.cpp b/src/plugins/texteditor/completionwidget.cpp
index b2b593d2cbac905541813cc9799129fe7fc38ef6..9b076e4a3391f7a25e9afb1edc6774902a95aa14 100644
--- a/src/plugins/texteditor/completionwidget.cpp
+++ b/src/plugins/texteditor/completionwidget.cpp
@@ -43,6 +43,7 @@
 #include <QtGui/QLabel>
 #include <QtGui/QStylePainter>
 #include <QtGui/QToolTip>
+#include <QtCore/QTimer>
 
 #include <limits.h>
 
@@ -300,30 +301,24 @@ void CompletionListView::maybeShowInfoTip()
     QRect r = rectForIndex(current);
     m_infoFrame->move(
             (parentWidget()->mapToGlobal(
-                    parentWidget()->rect().topRight() + QPoint(2, 0))).x(),
+                    parentWidget()->rect().topRight() + QPoint(0, 0))).x(),
             mapToGlobal(r.topRight()).y() - verticalOffset()
             );
     m_infoFrame->setText(infoTip);
     m_infoFrame->adjustSize();
     m_infoFrame->show();
+    m_infoFrame->raise();
 }
 
 void CompletionListView::currentChanged(const QModelIndex &current, const QModelIndex &previous)
 {
     QListView::currentChanged(current, previous);
-    if (isVisible())
-        maybeShowInfoTip();
+    QTimer::singleShot(0, this, SLOT(maybeShowInfoTip()));
 }
 
 
 bool CompletionListView::event(QEvent *e)
 {
-    if (e->type() == QEvent::Show) {
-        bool b = QListView::event(e);
-        maybeShowInfoTip();
-        return b;
-    }
-
     if (m_blockFocusOut)
         return QListView::event(e);
 
diff --git a/src/plugins/texteditor/completionwidget.h b/src/plugins/texteditor/completionwidget.h
index ef1087955e6a851c16f8cc90f184a9a99cb9038a..c16e01550768cbc46a7de914d6803aadbd5568b6 100644
--- a/src/plugins/texteditor/completionwidget.h
+++ b/src/plugins/texteditor/completionwidget.h
@@ -101,7 +101,9 @@ private:
     void setCompletionItems(const QList<TextEditor::CompletionItem> &completionitems);
     void keyboardSearch(const QString &search);
     void closeList(const QModelIndex &index);
+private slots:
     void maybeShowInfoTip();
+private:
 
     bool m_blockFocusOut;
     bool m_quickFix;