summaryrefslogtreecommitdiffstats
path: root/src/widgets/widgets/qmainwindowlayout_p.h
diff options
context:
space:
mode:
authorOlivier Goffart <ogoffart@woboq.com>2015-07-05 11:55:09 +0200
committerOlivier Goffart (Woboq GmbH) <ogoffart@woboq.com>2015-08-01 06:48:17 +0000
commit0e2d8ba7929df52b727c2d31315d1b8f10857b01 (patch)
treee49dcc264dbcfc1a4f0220eb941ff5c7962f4046 /src/widgets/widgets/qmainwindowlayout_p.h
parent3ae2387f375798a983b6d052723f10fc88b63da0 (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.h19
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);