forked from qt-creator/qt-creator
Fix issues with long project names in the minitargetselector
It's impossible to use very long names and some clipping occurs due to incorrect size hints on QLabel. - Made the popup minimum width depend on the longest project name entered. (it will not shrink) - The build and run labels have increased minimum size hints. - Combobox tooltip will be set to the project name as to make it possible to expand long names. Task-number: QTCREATORBUG-1278 RevBy: joao
This commit is contained in:
@@ -252,15 +252,19 @@ MiniTargetWidget::MiniTargetWidget(Target *target, QWidget *parent) :
|
|||||||
QFormLayout *formLayout = new QFormLayout;
|
QFormLayout *formLayout = new QFormLayout;
|
||||||
formLayout->setLabelAlignment(Qt::AlignRight);
|
formLayout->setLabelAlignment(Qt::AlignRight);
|
||||||
QLabel *lbl;
|
QLabel *lbl;
|
||||||
|
int indent = 10;
|
||||||
if (hasBuildConfiguration()) {
|
if (hasBuildConfiguration()) {
|
||||||
lbl = new QLabel(tr("Build:"));
|
lbl = new QLabel(tr("Build:"));
|
||||||
lbl->setObjectName(QString::fromUtf8("buildLabel"));
|
lbl->setObjectName(QString::fromUtf8("buildLabel"));
|
||||||
lbl->setIndent(10);
|
lbl->setMinimumWidth(lbl->fontMetrics().width(lbl->text()) + indent + 4);
|
||||||
|
lbl->setIndent(indent);
|
||||||
|
|
||||||
formLayout->addRow(lbl, buildHelperLayout);
|
formLayout->addRow(lbl, buildHelperLayout);
|
||||||
}
|
}
|
||||||
lbl = new QLabel(tr("Run:"));
|
lbl = new QLabel(tr("Run:"));
|
||||||
lbl->setObjectName(QString::fromUtf8("runLabel"));
|
lbl->setObjectName(QString::fromUtf8("runLabel"));
|
||||||
lbl->setIndent(10);
|
lbl->setMinimumWidth(lbl->fontMetrics().width(lbl->text()) + indent + 4);
|
||||||
|
lbl->setIndent(indent);
|
||||||
formLayout->addRow(lbl, runHelperLayout);
|
formLayout->addRow(lbl, runHelperLayout);
|
||||||
|
|
||||||
gridLayout->addWidget(m_targetName, 0, 0);
|
gridLayout->addWidget(m_targetName, 0, 0);
|
||||||
@@ -310,6 +314,8 @@ void MiniTargetWidget::addRunConfiguration(ProjectExplorer::RunConfiguration* rc
|
|||||||
{
|
{
|
||||||
connect(rc, SIGNAL(displayNameChanged()), SLOT(updateDisplayName()));
|
connect(rc, SIGNAL(displayNameChanged()), SLOT(updateDisplayName()));
|
||||||
m_runComboBox->addItem(rc->displayName(), QVariant::fromValue(rc));
|
m_runComboBox->addItem(rc->displayName(), QVariant::fromValue(rc));
|
||||||
|
m_runComboBox->setItemData(m_runComboBox->findText(rc->displayName()),
|
||||||
|
rc->displayName(), Qt::ToolTipRole);
|
||||||
if (m_target->activeRunConfiguration() == rc)
|
if (m_target->activeRunConfiguration() == rc)
|
||||||
m_runComboBox->setCurrentIndex(m_runComboBox->count()-1);
|
m_runComboBox->setCurrentIndex(m_runComboBox->count()-1);
|
||||||
|
|
||||||
@@ -327,6 +333,8 @@ void MiniTargetWidget::addBuildConfiguration(ProjectExplorer::BuildConfiguration
|
|||||||
QTC_ASSERT(m_buildComboBox, return);
|
QTC_ASSERT(m_buildComboBox, return);
|
||||||
connect(bc, SIGNAL(displayNameChanged()), SLOT(updateDisplayName()));
|
connect(bc, SIGNAL(displayNameChanged()), SLOT(updateDisplayName()));
|
||||||
m_buildComboBox->addItem(bc->displayName(), QVariant::fromValue(bc));
|
m_buildComboBox->addItem(bc->displayName(), QVariant::fromValue(bc));
|
||||||
|
m_buildComboBox->setItemData(m_buildComboBox->findText(bc->displayName()),
|
||||||
|
bc->displayName(), Qt::ToolTipRole);
|
||||||
if (m_target->activeBuildConfiguration() == bc)
|
if (m_target->activeBuildConfiguration() == bc)
|
||||||
m_buildComboBox->setCurrentIndex(m_buildComboBox->count()-1);
|
m_buildComboBox->setCurrentIndex(m_buildComboBox->count()-1);
|
||||||
|
|
||||||
@@ -401,7 +409,6 @@ MiniProjectTargetSelector::MiniProjectTargetSelector(QAction *targetSelectorActi
|
|||||||
m_projectsBox->setProperty("hideborder", true);
|
m_projectsBox->setProperty("hideborder", true);
|
||||||
m_projectsBox->setObjectName(QString::fromUtf8("ProjectsBox"));
|
m_projectsBox->setObjectName(QString::fromUtf8("ProjectsBox"));
|
||||||
m_projectsBox->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Preferred);
|
m_projectsBox->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Preferred);
|
||||||
m_projectsBox->setMaximumWidth(200);
|
|
||||||
|
|
||||||
toolLayout->addWidget(lbl);
|
toolLayout->addWidget(lbl);
|
||||||
toolLayout->addWidget(new Utils::StyledSeparator);
|
toolLayout->addWidget(new Utils::StyledSeparator);
|
||||||
@@ -576,6 +583,10 @@ void MiniProjectTargetSelector::updateAction()
|
|||||||
QString runConfig;
|
QString runConfig;
|
||||||
QIcon targetIcon = style()->standardIcon(QStyle::SP_ComputerIcon);
|
QIcon targetIcon = style()->standardIcon(QStyle::SP_ComputerIcon);
|
||||||
|
|
||||||
|
const int extrawidth = 110; // Size of margins + icon width
|
||||||
|
// Some fudge numbers to ensure the menu doesnt grow unbounded
|
||||||
|
int maxLength = fontMetrics().averageCharWidth() * 140;
|
||||||
|
|
||||||
if (project) {
|
if (project) {
|
||||||
projectName = project->displayName();
|
projectName = project->displayName();
|
||||||
|
|
||||||
@@ -585,10 +596,14 @@ void MiniProjectTargetSelector::updateAction()
|
|||||||
}
|
}
|
||||||
if (BuildConfiguration *bc = target->activeBuildConfiguration()) {
|
if (BuildConfiguration *bc = target->activeBuildConfiguration()) {
|
||||||
buildConfig = bc->displayName();
|
buildConfig = bc->displayName();
|
||||||
|
int minimumWidth = fontMetrics().width(bc->displayName() + tr("Build:")) + extrawidth;
|
||||||
|
m_widgetStack->setMinimumWidth(qMin(maxLength, qMax(minimumWidth, m_widgetStack->minimumWidth())));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (RunConfiguration *rc = target->activeRunConfiguration()) {
|
if (RunConfiguration *rc = target->activeRunConfiguration()) {
|
||||||
runConfig = rc->displayName();
|
runConfig = rc->displayName();
|
||||||
|
int minimumWidth = fontMetrics().width(rc->displayName() + tr("Run:")) + extrawidth;
|
||||||
|
m_widgetStack->setMinimumWidth(qMin(maxLength, qMax(minimumWidth, m_widgetStack->minimumWidth())));
|
||||||
}
|
}
|
||||||
targetToolTipText = target->toolTip();
|
targetToolTipText = target->toolTip();
|
||||||
targetIcon = createCenteredIcon(target->icon(), target->overlayIcon());
|
targetIcon = createCenteredIcon(target->icon(), target->overlayIcon());
|
||||||
|
|||||||
Reference in New Issue
Block a user