forked from qt-creator/qt-creator
Avoid function completion tootltip to go out of the screen.
Task-number: QTCREATORBUG-2307 Reviewed-by: Thorbjorn Lindeijer
This commit is contained in:
@@ -105,6 +105,7 @@ private slots:
|
||||
private:
|
||||
void updateArgumentHighlight();
|
||||
void updateHintText();
|
||||
void placeInsideScreen();
|
||||
|
||||
Function *currentFunction() const
|
||||
{ return m_items.at(m_current); }
|
||||
@@ -414,8 +415,11 @@ 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());
|
||||
placeInsideScreen();
|
||||
}
|
||||
|
||||
void FunctionArgumentWidget::placeInsideScreen()
|
||||
{
|
||||
const QDesktopWidget *desktop = QApplication::desktop();
|
||||
#ifdef Q_WS_MAC
|
||||
const QRect screen = desktop->availableGeometry(desktop->screenNumber(m_editor->widget()));
|
||||
@@ -423,7 +427,22 @@ void FunctionArgumentWidget::updateHintText()
|
||||
const QRect screen = desktop->screenGeometry(desktop->screenNumber(m_editor->widget()));
|
||||
#endif
|
||||
|
||||
const QSize sz = m_popupFrame->sizeHint();
|
||||
m_pager->setFixedWidth(m_pager->minimumSizeHint().width());
|
||||
|
||||
setWordWrap(false);
|
||||
const int maxDesiredWidth = screen.width() - 10;
|
||||
const QSize minHint = m_popupFrame->minimumSizeHint();
|
||||
if (minHint.width() > maxDesiredWidth) {
|
||||
setWordWrap(true);
|
||||
m_popupFrame->setFixedWidth(maxDesiredWidth);
|
||||
const int extra =
|
||||
m_popupFrame->contentsMargins().bottom() + m_popupFrame->contentsMargins().top();
|
||||
m_popupFrame->setFixedHeight(heightForWidth(maxDesiredWidth - m_pager->width()) + extra);
|
||||
} else {
|
||||
m_popupFrame->setFixedSize(minHint);
|
||||
}
|
||||
|
||||
const QSize sz = m_popupFrame->size();
|
||||
QPoint pos = m_editor->cursorRect(m_startpos).topLeft();
|
||||
pos.setY(pos.y() - sz.height() - 1);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user