QDockWidget: Delay-create QWidgetResizeHandler.
Task-number: QTBUG-34352 Change-Id: Ia7e5d8038b334686bedeee60c35656f3ab948e4c Reviewed-by: J-P Nurmi <jpnurmi@digia.com>bb10
parent
5f50416620
commit
a4c4c12f0a
|
|
@ -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);
|
||||
}
|
||||
|
||||
/*!
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue