QDockWidget: Prevent repetitive unplugging of floating dock widgets.

When calling QDockWidget::setTitleBarWidget() from within signal
QDockWidget::topLevelChanged(), a nested call of
QDockWidgetPrivate::setWindowState(unplug=true) is triggered, leaving
it with Qt::X11BypassWindowManagerHint set and thus invisible/off
screen.

Force the unplug parameter to false if the widget is already
in floating state.

Task-number: QTBUG-42818
Task-number: QTBUG-38964
Change-Id: I6aff61e4ee1501f5db281566b66db66c19351410
Reviewed-by: Gatis Paeglis <gatis.paeglis@digia.com>
bb10
Friedemann Kleint 2014-12-01 10:05:42 +01:00
parent 50d29a695a
commit 8860522d7e
1 changed files with 2 additions and 0 deletions

View File

@ -1009,6 +1009,8 @@ void QDockWidgetPrivate::setWindowState(bool floating, bool unplug, const QRect
}
bool wasFloating = q->isFloating();
if (wasFloating) // Prevent repetitive unplugging from nested invocations (QTBUG-42818)
unplug = false;
bool hidden = q->isHidden();
if (q->isVisible())