summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools/cppcodecompletion.cpp
diff options
context:
space:
mode:
authorThorbjørn Lindeijer <thorbjorn.lindeijer@nokia.com>2009-03-26 15:12:31 +0100
committerThorbjørn Lindeijer <thorbjorn.lindeijer@nokia.com>2009-03-26 15:13:48 +0100
commitece7c9afd744f1403ccb25e04fa20a541218bd72 (patch)
tree421410bebb752aebe0d218a9953faa9a508e6a3b /src/plugins/cpptools/cppcodecompletion.cpp
parent760126c9b5e0933f6db0840b433d11b619f82a91 (diff)
downloadqt-creator-ece7c9afd744f1403ccb25e04fa20a541218bd72.tar.gz
Keep the function argument widget on the screen
Done with Roberto Raggi.
Diffstat (limited to 'src/plugins/cpptools/cppcodecompletion.cpp')
-rw-r--r--src/plugins/cpptools/cppcodecompletion.cpp20
1 files changed, 17 insertions, 3 deletions
diff --git a/src/plugins/cpptools/cppcodecompletion.cpp b/src/plugins/cpptools/cppcodecompletion.cpp
index d5f6397269..35b751104d 100644
--- a/src/plugins/cpptools/cppcodecompletion.cpp
+++ b/src/plugins/cpptools/cppcodecompletion.cpp
@@ -61,6 +61,7 @@
#include <QtCore/QFile>
#include <QtGui/QAction>
#include <QtGui/QApplication>
+#include <QtGui/QDesktopWidget>
#include <QtGui/QKeyEvent>
#include <QtGui/QLabel>
#include <QtGui/QToolButton>
@@ -271,9 +272,6 @@ void FunctionArgumentWidget::showFunctionHint(QList<Function *> functionSymbols,
m_currentarg = -1;
updateArgumentHighlight();
- QPoint pos = m_editor->cursorRect(m_startpos).topLeft();
- pos.setY(pos.y() - m_popupFrame->sizeHint().height() - 1);
- m_popupFrame->move(pos);
m_popupFrame->show();
}
@@ -382,6 +380,22 @@ void FunctionArgumentWidget::updateHintText()
m_numberLabel->setText(tr("%1 of %2").arg(m_current + 1).arg(m_items.size()));
m_popupFrame->setFixedWidth(m_popupFrame->minimumSizeHint().width());
+
+ const QDesktopWidget *desktop = QApplication::desktop();
+#ifdef Q_OS_MAC
+ const QRect screen = desktop->availableGeometry(desktop->screenNumber(m_popupFrame));
+#else
+ const QRect screen = desktop->screenGeometry(desktop->screenNumber(m_popupFrame));
+#endif
+
+ const QSize sz = m_popupFrame->sizeHint();
+ QPoint pos = m_editor->cursorRect(m_startpos).topLeft();
+ pos.setY(pos.y() - sz.height() - 1);
+
+ if (pos.x() + sz.width() > screen.right())
+ pos.setX(screen.right() - sz.width());
+
+ m_popupFrame->move(pos);
}
CppCodeCompletion::CppCodeCompletion(CppModelManager *manager)