diff options
Diffstat (limited to 'src/widgets/widgets/qdockwidget.cpp')
-rw-r--r-- | src/widgets/widgets/qdockwidget.cpp | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/src/widgets/widgets/qdockwidget.cpp b/src/widgets/widgets/qdockwidget.cpp index ad9481a928..3efa89edb3 100644 --- a/src/widgets/widgets/qdockwidget.cpp +++ b/src/widgets/widgets/qdockwidget.cpp @@ -591,10 +591,6 @@ void QDockWidgetPrivate::init() QObject::connect(button, SIGNAL(clicked()), q, SLOT(close())); layout->setWidgetForRole(QDockWidgetLayout::CloseButton, button); - resizer = new QWidgetResizeHandler(q); - resizer->setMovingEnabled(false); - resizer->setActive(false); - #ifndef QT_NO_ACTION toggleViewAction = new QAction(q); toggleViewAction->setCheckable(true); @@ -760,13 +756,12 @@ void QDockWidgetPrivate::endDrag(bool abort) Qt::WindowFlags flags = q->windowFlags(); flags &= ~Qt::X11BypassWindowManagerHint; q->setWindowFlags(flags); - resizer->setActive(QWidgetResizeHandler::Resize, true); + setResizerActive(true); q->show(); } else { QDockWidgetLayout *myLayout = qobject_cast<QDockWidgetLayout*>(layout); - resizer->setActive(QWidgetResizeHandler::Resize, - myLayout->widgetForRole(QDockWidgetLayout::TitleBar) != 0); + setResizerActive(myLayout->widgetForRole(QDockWidgetLayout::TitleBar) != 0); } undockedGeometry = q->geometry(); q->activateWindow(); @@ -779,6 +774,17 @@ void QDockWidgetPrivate::endDrag(bool abort) state = 0; } +void QDockWidgetPrivate::setResizerActive(bool active) +{ + Q_Q(QDockWidget); + if (active && !resizer) { + resizer = new QWidgetResizeHandler(q); + resizer->setMovingEnabled(false); + } + if (resizer) + resizer->setActive(QWidgetResizeHandler::Resize, active); +} + bool QDockWidgetPrivate::isAnimating() const { Q_Q(const QDockWidget); @@ -1052,7 +1058,7 @@ void QDockWidgetPrivate::setWindowState(bool floating, bool unplug, const QRect } } - resizer->setActive(QWidgetResizeHandler::Resize, !unplug && floating && !nativeDeco); + setResizerActive(!unplug && floating && !nativeDeco); } /*! |