diff options
author | Olivier Goffart <ogoffart@woboq.com> | 2015-07-05 11:55:09 +0200 |
---|---|---|
committer | Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com> | 2015-08-01 06:48:17 +0000 |
commit | 0e2d8ba7929df52b727c2d31315d1b8f10857b01 (patch) | |
tree | e49dcc264dbcfc1a4f0220eb941ff5c7962f4046 /src/widgets/widgets/qmainwindowlayout_p.h | |
parent | 3ae2387f375798a983b6d052723f10fc88b63da0 (diff) |
QMainWindow: allow dropping QDockWidget to floating docks
In the QMainWindow::GroupedDragging mode, we can have floating
tabs of QDockWidget's, but it was not possible to drop onto
already floating QDockWidgets to tab them.
Task-number: QTBUG-47211
Change-Id: Ic666f6f8816d91a3eed844a6da1eb8698c8c7a0c
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
Diffstat (limited to 'src/widgets/widgets/qmainwindowlayout_p.h')
-rw-r--r-- | src/widgets/widgets/qmainwindowlayout_p.h | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/src/widgets/widgets/qmainwindowlayout_p.h b/src/widgets/widgets/qmainwindowlayout_p.h index 0c76a0ce90..9a13e5f5ce 100644 --- a/src/widgets/widgets/qmainwindowlayout_p.h +++ b/src/widgets/widgets/qmainwindowlayout_p.h @@ -92,6 +92,20 @@ protected: bool event(QEvent *) Q_DECL_OVERRIDE; void paintEvent(QPaintEvent*) Q_DECL_OVERRIDE; }; + +// This item will be used in the layout for the gap item. We cannot use QWidgetItem directly +// because QWidgetItem functions return an empty size for widgets that are are floating. +class QDockWidgetGroupWindowItem : public QWidgetItem +{ +public: + explicit QDockWidgetGroupWindowItem(QDockWidgetGroupWindow *parent) : QWidgetItem(parent) {} + QSize minimumSize() const Q_DECL_OVERRIDE { return lay()->minimumSize(); } + QSize maximumSize() const Q_DECL_OVERRIDE { return lay()->maximumSize(); } + QSize sizeHint() const Q_DECL_OVERRIDE { return lay()->sizeHint(); } + +private: + QLayout *lay() const { return const_cast<QDockWidgetGroupWindowItem *>(this)->widget()->layout(); } +}; #endif /* This data structure represents the state of all the tool-bars and dock-widgets. It's value based @@ -288,7 +302,10 @@ public: QRect currentGapRect; QWidget *pluggingWidget; #ifndef QT_NO_RUBBERBAND - QRubberBand *gapIndicator; + QPointer<QRubberBand> gapIndicator; +#endif +#ifndef QT_NO_DOCKWIDGET + QPointer<QWidget> currentHoveredFloat; // set when dragging over a floating dock widget #endif void hover(QLayoutItem *widgetItem, const QPoint &mousePos); |