diff options
author | Tobias Hunger <tobias.hunger@nokia.com> | 2011-07-25 15:59:53 +0000 |
---|---|---|
committer | Tobias Hunger <tobias.hunger@nokia.com> | 2011-07-26 16:02:32 +0200 |
commit | 06ab6e66be6ff6ce18c11f5f03e79d70a7c9b0a5 (patch) | |
tree | 22dca7f8699eba1ebcd4d89069bbe2519878128d /src/libs/utils/detailswidget.cpp | |
parent | 94a71d2e8c606f1952f733128ce432e2f54a1581 (diff) | |
download | qt-creator-06ab6e66be6ff6ce18c11f5f03e79d70a7c9b0a5.tar.gz |
Fix graphic glitches in project mode
Fix rendering issues in the build step lists display of the project
mode: The label got dropped from the layout.
Never drop the widgets from the layout to avoid this issue:-)
Change-Id: I912a8b6d78537f0c395c2bc440387b20b66a4584
Reviewed-on: http://codereview.qt.nokia.com/2126
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Diffstat (limited to 'src/libs/utils/detailswidget.cpp')
-rw-r--r-- | src/libs/utils/detailswidget.cpp | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/src/libs/utils/detailswidget.cpp b/src/libs/utils/detailswidget.cpp index 51bec20a6e..922aea8a64 100644 --- a/src/libs/utils/detailswidget.cpp +++ b/src/libs/utils/detailswidget.cpp @@ -105,14 +105,20 @@ DetailsWidgetPrivate::DetailsWidgetPrivate(QWidget *parent) : m_hovered(false), m_useCheckBox(false) { + QHBoxLayout *summaryLayout = new QHBoxLayout; + summaryLayout->setContentsMargins(MARGIN, MARGIN, MARGIN, MARGIN); + summaryLayout->setSpacing(0); + m_summaryLabel->setTextInteractionFlags(Qt::TextSelectableByMouse | Qt::LinksAccessibleByMouse); - m_summaryLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); - m_summaryLabel->setContentsMargins(MARGIN, MARGIN, MARGIN, MARGIN); + m_summaryLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); + m_summaryLabel->setContentsMargins(0, 0, 0, 0); + summaryLayout->addWidget(m_summaryLabel); - m_summaryCheckBox->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); - m_summaryCheckBox->setContentsMargins(MARGIN, MARGIN, MARGIN, MARGIN); + m_summaryCheckBox->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); m_summaryCheckBox->setAttribute(Qt::WA_LayoutUsesWidgetRect); /* broken layout on mac otherwise */ m_summaryCheckBox->setVisible(false); + m_summaryCheckBox->setContentsMargins(0, 0, 0, 0); + summaryLayout->addWidget(m_summaryCheckBox); m_additionalSummaryLabel->setTextInteractionFlags(Qt::TextSelectableByMouse); m_additionalSummaryLabel->setContentsMargins(MARGIN, MARGIN, MARGIN, MARGIN); @@ -121,7 +127,7 @@ DetailsWidgetPrivate::DetailsWidgetPrivate(QWidget *parent) : m_grid->setContentsMargins(0, 0, 0, 0); m_grid->setSpacing(0); - m_grid->addWidget(m_summaryLabel, 0, 0); + m_grid->addLayout(summaryLayout, 0, 0); m_grid->addWidget(m_detailsButton, 0, 2); m_grid->addWidget(m_additionalSummaryLabel, 1, 0, 1, 3); } @@ -168,7 +174,6 @@ void DetailsWidgetPrivate::updateControls() if (m_widget) m_widget->setVisible(m_state == DetailsWidget::Expanded || m_state == DetailsWidget::NoSummary); m_detailsButton->setChecked(m_state == DetailsWidget::Expanded && m_widget); - //m_summaryLabel->setEnabled(m_state == DetailsWidget::Collapsed && m_widget); m_detailsButton->setVisible(m_state != DetailsWidget::NoSummary); m_summaryLabel->setVisible(m_state != DetailsWidget::NoSummary && !m_useCheckBox); m_summaryCheckBox->setVisible(m_state != DetailsWidget::NoSummary && m_useCheckBox); @@ -202,6 +207,8 @@ DetailsWidget::DetailsWidget(QWidget *parent) : { setLayout(d->m_grid); + setUseCheckBox(false); + connect(d->m_detailsButton, SIGNAL(toggled(bool)), this, SLOT(setExpanded(bool))); connect(d->m_summaryCheckBox, SIGNAL(toggled(bool)), @@ -224,8 +231,6 @@ bool DetailsWidget::useCheckBox() void DetailsWidget::setUseCheckBox(bool b) { d->m_useCheckBox = b; - QWidget *widget = b ? static_cast<QWidget *>(d->m_summaryCheckBox) : static_cast<QWidget *>(d->m_summaryLabel); - d->m_grid->addWidget(widget, 0, 0); d->m_summaryLabel->setVisible(b); d->m_summaryCheckBox->setVisible(!b); } @@ -260,7 +265,7 @@ void DetailsWidget::paintEvent(QPaintEvent *paintEvent) QPainter p(this); QWidget *topLeftWidget = d->m_useCheckBox ? static_cast<QWidget *>(d->m_summaryCheckBox) : static_cast<QWidget *>(d->m_summaryLabel); - QPoint topLeft(topLeftWidget->geometry().left(), contentsRect().top()); + QPoint topLeft(topLeftWidget->geometry().left() - MARGIN, contentsRect().top()); const QRect paintArea(topLeft, contentsRect().bottomRight()); if (d->m_state != Expanded) { |