summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/widgets/widgets/qdockwidget.cpp22
-rw-r--r--src/widgets/widgets/qdockwidget_p.h8
2 files changed, 19 insertions, 11 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);
}
/*!
diff --git a/src/widgets/widgets/qdockwidget_p.h b/src/widgets/widgets/qdockwidget_p.h
index f7cd8c0039..a4dc68dd7d 100644
--- a/src/widgets/widgets/qdockwidget_p.h
+++ b/src/widgets/widgets/qdockwidget_p.h
@@ -88,7 +88,7 @@ public:
features(QDockWidget::DockWidgetClosable
| QDockWidget::DockWidgetMovable
| QDockWidget::DockWidgetFloatable),
- allowedAreas(Qt::AllDockWidgetAreas)
+ allowedAreas(Qt::AllDockWidgetAreas), resizer(0)
{ }
void init();
@@ -101,8 +101,6 @@ public:
QDockWidget::DockWidgetFeatures features;
Qt::DockWidgetAreas allowedAreas;
- QWidgetResizeHandler *resizer;
-
#ifndef QT_NO_ACTION
QAction *toggleViewAction;
#endif
@@ -124,8 +122,12 @@ public:
void unplug(const QRect &rect);
void plug(const QRect &rect);
+ void setResizerActive(bool active);
bool isAnimating() const;
+
+private:
+ QWidgetResizeHandler *resizer;
};
class Q_WIDGETS_EXPORT QDockWidgetLayout : public QLayout