diff options
author | Axel Spoerl <Axel.Spoerl@qt.io> | 2022-03-04 11:05:47 +0100 |
---|---|---|
committer | Axel Spoerl <axel.spoerl@qt.io> | 2022-04-19 17:12:20 +0000 |
commit | 9ff40b59da58160dc26c54204a615a2456e07405 (patch) | |
tree | 58139d24f3009ace9166c70e0b8f3d92ed432c47 /src/widgets/widgets/qdockarealayout_p.h | |
parent | 908e85cc85d18f56575ee040589bcd5745c62adb (diff) |
Fix QDockWidget parenting and dock permissions
Check DockWidgetArea permissions of QDockWidgetGroupWindows with single
dock widget. Obtain a dock widget's tab position from a dock widget
group window if it can't be established otherwise. Remove hardcoded
assumption that a dock widget is in the left dock. Both cases have lead
to inconsistent entries and dangling pointers in
QDockAreaLayoutInfo::item_list.
Remove warning: QMainWindowLayout::tabPosition called with out-of-bounds
value '0', which becomes obsolete by the fix.
Create a QDockWidgetGroup window prepered to become a floating tab,
whenever a dock widget is being hovered over. Store it in item_list so
it can be found and deleted when required.
No longer call e->ignore() after propagating close events to the first
dock widget and thus preventing others from receiving the event.
Add logging category qt.widgets.dockwidgets
Update dock widget autotest with tests to check the fixes mentioned:
plugging, unplugging, hiding, showing, closing and deleting.
Blackist closeAndDelete, floatingTabs test on macos, QEMU, arm, android
due to flaky isFloating() response after a dock widget has been closed
or plugged.
QSKIP dockPermissions and floatingTabs test on Windows due to mouse
simulation malfunction.
QSKIP hideAndShow test on Linux in case of xcb error (QTBUG-82059)
Fixes: QTBUG-99136
Pick-to: 6.3 6.2
Change-Id: Ibd353e0acc9831a0d67c9f682429ab46b94bdbb0
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.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/widgets/widgets/qdockarealayout_p.h b/src/widgets/widgets/qdockarealayout_p.h index 57572bcfa1..829a24dce3 100644 --- a/src/widgets/widgets/qdockarealayout_p.h +++ b/src/widgets/widgets/qdockarealayout_p.h @@ -84,7 +84,7 @@ class QTabBar; // A path indetifies uniquely one object in this tree, the first number being the side and all the following // indexes into the QDockAreaLayoutInfo::item_list. -struct QDockAreaLayoutItem +struct Q_AUTOTEST_EXPORT QDockAreaLayoutItem { enum ItemFlags { NoFlags = 0, GapItem = 1, KeepSize = 2 }; @@ -302,6 +302,7 @@ public: void setGrid(QList<QLayoutStruct> *ver_struct_list, QList<QLayoutStruct> *hor_struct_list); QRect gapRect(const QList<int> &path) const; + QRect gapRect(QInternal::DockPosition dockPos) const; void keepSize(QDockWidget *w); #if QT_CONFIG(tabbar) |