Skip to content

Commit 65058d3

Browse files
Fixed issue #251 - Window momentarily flashes as floating widget
1 parent 175b485 commit 65058d3

File tree

1 file changed

+17
-8
lines changed

1 file changed

+17
-8
lines changed

src/DockWidgetTab.cpp

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,19 @@ struct DockWidgetTabPrivate
146146
CloseButton->setVisible(DockWidgetClosable && TabHasCloseButton);
147147
}
148148

149+
/**
150+
* Update the size policy of the close button depending on the
151+
* RetainTabSizeWhenCloseButtonHidden feature
152+
*/
153+
void updateCloseButtonSizePolicy()
154+
{
155+
auto Features = DockWidget->features();
156+
auto SizePolicy = CloseButton->sizePolicy();
157+
SizePolicy.setRetainSizeWhenHidden(Features.testFlag(CDockWidget::DockWidgetClosable)
158+
&& testConfigFlag(CDockManager::RetainTabSizeWhenCloseButtonHidden));
159+
CloseButton->setSizePolicy(SizePolicy);
160+
}
161+
149162
template <typename T>
150163
IFloatingWidget* createFloatingWidget(T* Widget, bool OpaqueUndocking)
151164
{
@@ -200,7 +213,7 @@ void DockWidgetTabPrivate::createLayout()
200213
CloseButton->setObjectName("tabCloseButton");
201214
internal::setButtonIcon(CloseButton, QStyle::SP_TitleBarCloseButton, TabCloseIcon);
202215
CloseButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
203-
_this->onDockWidgetFeaturesChanged();
216+
updateCloseButtonSizePolicy();
204217
internal::setToolTip(CloseButton, QObject::tr("Close Tab"));
205218
_this->connect(CloseButton, SIGNAL(clicked()), SIGNAL(closeRequested()));
206219

@@ -473,7 +486,7 @@ bool CDockWidgetTab::isActiveTab() const
473486
//============================================================================
474487
void CDockWidgetTab::setActiveTab(bool active)
475488
{
476-
d->updateCloseButtonVisibility(active);
489+
d->updateCloseButtonVisibility(active);
477490

478491
// Focus related stuff
479492
if (CDockManager::testConfigFlag(CDockManager::FocusHighlighting) && !d->DockWidget->dockManager()->isRestoringState())
@@ -656,12 +669,8 @@ bool CDockWidgetTab::event(QEvent *e)
656669
//============================================================================
657670
void CDockWidgetTab::onDockWidgetFeaturesChanged()
658671
{
659-
auto Features = d->DockWidget->features();
660-
auto SizePolicy = d->CloseButton->sizePolicy();
661-
SizePolicy.setRetainSizeWhenHidden(Features.testFlag(CDockWidget::DockWidgetClosable)
662-
&& d->testConfigFlag(CDockManager::RetainTabSizeWhenCloseButtonHidden));
663-
d->CloseButton->setSizePolicy(SizePolicy);
664-
d->updateCloseButtonVisibility(isActiveTab());
672+
d->updateCloseButtonSizePolicy();
673+
d->updateCloseButtonVisibility(isActiveTab());
665674
}
666675

667676

0 commit comments

Comments
 (0)