Prevent improper sizing of MiniProjectTargetSelector

The selector would sometimes be too high (if projects were removed),
and sometimes show vertical scrollbars (if projects were added). This
problem was limited to the first time that the widget was opened on
all platforms but on OS X, where it could be observed persistently
and where its lack potentially can cause problems due to ed5d10a.

Reviewed-by: con
Task-Number: QTCREATORBUG-1792
This commit is contained in:
Daniel Molkentin
2011-04-12 16:35:50 +02:00
parent 5467906f86
commit a22ad73b9a

View File

@@ -415,13 +415,16 @@ MiniProjectTargetSelector::MiniProjectTargetSelector(QAction *targetSelectorActi
void MiniProjectTargetSelector::setVisible(bool visible) void MiniProjectTargetSelector::setVisible(bool visible)
{ {
if (visible) { if (visible) {
resize(sizeHint()); QSize sh = sizeHint();
resize(sh);
QStatusBar *statusBar = Core::ICore::instance()->statusBar(); QStatusBar *statusBar = Core::ICore::instance()->statusBar();
QPoint moveTo = statusBar->mapToGlobal(QPoint(0,0)); QPoint moveTo = statusBar->mapToGlobal(QPoint(0,0));
moveTo -= QPoint(0, sizeHint().height()); moveTo -= QPoint(0, sh.height());
move(moveTo); move(moveTo);
} }
QWidget::setVisible(visible); QWidget::setVisible(visible);
if (m_widgetStack->currentWidget()) if (m_widgetStack->currentWidget())
m_widgetStack->currentWidget()->setFocus(); m_widgetStack->currentWidget()->setFocus();
@@ -533,6 +536,8 @@ void MiniProjectTargetSelector::addTarget(ProjectExplorer::Target *target, bool
if (activeTarget) if (activeTarget)
plw->setCurrentItem(lwi, QItemSelectionModel::SelectCurrent); plw->setCurrentItem(lwi, QItemSelectionModel::SelectCurrent);
m_widgetStack->updateGeometry();
} }
void MiniProjectTargetSelector::removeTarget(ProjectExplorer::Target *target) void MiniProjectTargetSelector::removeTarget(ProjectExplorer::Target *target)
@@ -554,9 +559,12 @@ void MiniProjectTargetSelector::removeTarget(ProjectExplorer::Target *target)
delete plw->takeItem(i); delete plw->takeItem(i);
delete mtw; delete mtw;
} }
disconnect(target, SIGNAL(toolTipChanged()), this, SLOT(updateAction())); disconnect(target, SIGNAL(toolTipChanged()), this, SLOT(updateAction()));
disconnect(target, SIGNAL(iconChanged()), this, SLOT(updateAction())); disconnect(target, SIGNAL(iconChanged()), this, SLOT(updateAction()));
disconnect(target, SIGNAL(overlayIconChanged()), this, SLOT(updateAction())); disconnect(target, SIGNAL(overlayIconChanged()), this, SLOT(updateAction()));
m_widgetStack->updateGeometry();
} }
void MiniProjectTargetSelector::changeActiveTarget(ProjectExplorer::Target *target) void MiniProjectTargetSelector::changeActiveTarget(ProjectExplorer::Target *target)