diff options
author | Thorbjørn Lindeijer <thorbjorn.lindeijer@nokia.com> | 2009-03-26 15:12:31 +0100 |
---|---|---|
committer | Thorbjørn Lindeijer <thorbjorn.lindeijer@nokia.com> | 2009-03-26 15:13:48 +0100 |
commit | ece7c9afd744f1403ccb25e04fa20a541218bd72 (patch) | |
tree | 421410bebb752aebe0d218a9953faa9a508e6a3b /src/plugins/cpptools/cppcodecompletion.cpp | |
parent | 760126c9b5e0933f6db0840b433d11b619f82a91 (diff) | |
download | qt-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.cpp | 20 |
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) |