summaryrefslogtreecommitdiffstats
path: root/src/widgets/widgets/qdockarealayout_p.h
diff options
context:
space:
mode:
authorAxel Spoerl <axel.spoerl@qt.io>2023-06-19 10:02:21 +0200
committerVolker Hilsheimer <volker.hilsheimer@qt.io>2023-06-20 05:55:53 +0000
commitb26cdbd8777bf1348c7967138e59836990233121 (patch)
tree46cf7d720c9ed5101862e0a5ba0d58612ab93899 /src/widgets/widgets/qdockarealayout_p.h
parentfaec937756810bbc478da677efb0dca4531a6222 (diff)
QDockWidget: Don't insert gap item if QDockWidgetGroupWindow has one
When a dock widget is hovered over a QDockWidgetGroupWindow, a gap item is inserted at its potential docking position. Since only one item at a time can be moved with the mouse, only one such gap item can exist. QDockAreaLayoutInfo::insertGap() therefore contains an assertion, that kicks in if a second gap item is inserted. QDockWidgetGroupWindow::hover() checks if the dock widget is hovered over a gap item. If that is the case, no additional gap item is inserted. The check fails if a gap item exists in the group window, but the dock widget is hovered over another part of that group window. This can be the case if the group window already contains more than one dock widget: By inserting the gap, the group window's size changes, one of the existing dock widgets receives another hover event and a second gap insertion is attempted. This patch adds QDockAreaLayoutInfo::hasGapItem() to check if a gap already exists. The method is queried in addition to prevent a second gap insertion. An autotest has not been added, because gap items appear and disappear during hovering. The improved functionality can be tested manually with the mainwindow example. Fixes: QTBUG-112491 Fixes: QTBUG-114542 Pick-to: 6.6 6.5 Change-Id: I9ea64e729873a86eb98ea950fbb066817fc25a07 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Diffstat (limited to 'src/widgets/widgets/qdockarealayout_p.h')
-rw-r--r--src/widgets/widgets/qdockarealayout_p.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/widgets/widgets/qdockarealayout_p.h b/src/widgets/widgets/qdockarealayout_p.h
index b37f22a1ee..b5576f2e85 100644
--- a/src/widgets/widgets/qdockarealayout_p.h
+++ b/src/widgets/widgets/qdockarealayout_p.h
@@ -133,6 +133,7 @@ public:
void clear();
bool isEmpty() const;
+ bool hasGapItem(const QList<int> &path) const;
bool onlyHasPlaceholders() const;
bool hasFixedSize() const;
QList<int> findSeparator(const QPoint &pos) const;