forked from qt-creator/qt-creator
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:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user