Fix flickering in the project pane.

This isn't a nice fix but the least evil version of a hack i could come
up. The source of the flickering is: We have a deeply nested structure
of widgets on the project pane. If we call hide() on such a deeply
nested widget, it will activate() it's parent layout synchronously.
That will then post an event (via updateGeometries() ) to its parent
layout that it needs relayouting. Which then will post to its parent
layout the same. And for each LayoutRequested, there's a painting in
between. The fix instead calls activate() up the chain until we are at
the viewport. This immediately relayouts everything. This adds a non
obvoius potentially for breakeage if the widgets are embedded in a
different widget hierarchy. But well, that's life.
This commit is contained in:
dt
2009-08-11 16:37:24 +02:00
parent a9fb097ddc
commit 1aa05ae5e3
9 changed files with 52 additions and 4 deletions

View File

@@ -97,10 +97,14 @@ BuildStepsPage::~BuildStepsPage()
void BuildStepsPage::toggleDetails()
{
QToolButton *tb = qobject_cast<QToolButton *>(sender());
if (tb)
foreach(const BuildStepsWidgetStruct &s, m_buildSteps)
if (s.detailsButton == tb)
if (tb) {
foreach(const BuildStepsWidgetStruct &s, m_buildSteps) {
if (s.detailsButton == tb) {
s.widget->setVisible(!s.widget->isVisible());
fixupLayout(s.widget);
}
}
}
}
void BuildStepsPage::updateSummary()