57 enum ItemFlags { NoFlags = 0, GapItem = 1, KeepSize = 2 };
59 explicit QDockAreaLayoutItem(QLayoutItem *_widgetItem =
nullptr);
60 explicit QDockAreaLayoutItem(QDockAreaLayoutInfo *_subinfo);
61 explicit QDockAreaLayoutItem(QPlaceHolderItem *_placeHolderItem);
62 QDockAreaLayoutItem(
const QDockAreaLayoutItem &other);
63 ~QDockAreaLayoutItem();
65 QDockAreaLayoutItem &operator = (
const QDockAreaLayoutItem &other);
68 QSize minimumSize()
const;
69 QSize maximumSize()
const;
70 QSize sizeHint()
const;
71 bool expansive(Qt::Orientation o)
const;
72 bool hasFixedSize(Qt::Orientation o)
const;
74 QLayoutItem *widgetItem;
75 QDockAreaLayoutInfo *subinfo;
76 QPlaceHolderItem *placeHolderItem;
80#ifndef QT_NO_DEBUG_STREAM
81 friend Q_AUTOTEST_EXPORT QDebug operator<<(QDebug dbg,
const QDockAreaLayoutItem &item);
82 friend Q_AUTOTEST_EXPORT QDebug operator<<(QDebug dbg,
const QDockAreaLayoutItem *item);
100 QDockAreaLayoutInfo();
101 QDockAreaLayoutInfo(
const int *_sep, QInternal::DockPosition _dockPos, Qt::Orientation _o,
102 int tbhape, QMainWindow *window);
104 QSize minimumSize()
const;
105 QSize maximumSize()
const;
106 QSize sizeHint()
const;
109 bool insertGap(
const QList<
int> &path, QLayoutItem *dockWidgetItem);
110 QLayoutItem *plug(
const QList<
int> &path);
111 QLayoutItem *unplug(
const QList<
int> &path);
112 enum TabMode { NoTabs, AllowTabs, ForceTabs };
113 QList<
int> gapIndex(
const QPoint &pos,
bool nestingEnabled,
114 TabMode tabMode)
const;
115 void remove(
const QList<
int> &path);
116 void remove(QWidget *widget);
117 void unnest(
int index);
118 void split(
int index, Qt::Orientation orientation, QLayoutItem *dockWidgetItem);
120 void tab(
int index, QLayoutItem *dockWidgetItem);
122 QDockAreaLayoutItem &item(
const QList<
int> &path);
123 QDockAreaLayoutInfo *info(
const QList<
int> &path);
124 QDockAreaLayoutInfo *info(QWidget *widget);
126 void saveState(QDataStream &stream)
const;
127 bool restoreState(QDataStream &stream, QList<QDockWidget*> &widgets, QInternal::CallMode);
130 bool expansive(Qt::Orientation o)
const;
131 int changeSize(
int index,
int size,
bool below);
132 QRect itemRect(
int index,
bool isGap =
false)
const;
133 QRect itemRect(
const QList<
int> &path)
const;
134 QRect separatorRect(
int index)
const;
135 QRect separatorRect(
const QList<
int> &path)
const;
138 bool isEmpty()
const;
139 bool hasGapItem(
const QList<
int> &path)
const;
140 bool onlyHasPlaceholders()
const;
141 bool hasFixedSize()
const;
142 QList<
int> findSeparator(
const QPoint &pos)
const;
143 int next(
int idx)
const;
144 int prev(
int idx)
const;
146 QList<
int> indexOf(
const QWidget *widget)
const;
147 QList<
int> indexOfPlaceHolder(
const QString &objectName)
const;
148 std::unique_ptr<QLayoutItem> takeWidgetItem(QWidget *widget);
150 QDockWidget *apply(QWidgetAnimator::AnimationRule rule);
152 void paintSeparators(QPainter *p, QWidget *widget,
const QRegion &clip,
153 const QPoint &mouse)
const;
154 QRegion separatorRegion()
const;
155 int separatorMove(
int index,
int delta);
156 int separatorMove(
const QList<
int> &separator,
const QPoint &origin,
const QPoint &dest);
158 QLayoutItem *itemAt(
int *x,
int index)
const;
159 QLayoutItem *takeAt(
int *x,
int index);
160 void add(QWidget *widget);
161 void deleteAllLayoutItems();
163 QMainWindowLayout *mainWindowLayout()
const;
166 mutable QList<QWidget *> separatorWidgets;
167 QInternal::DockPosition dockPos;
170 QMainWindow *mainWindow;
171 QList<QDockAreaLayoutItem> item_list;
173 void updateSeparatorWidgets()
const;
174 QSet<QWidget*> usedSeparatorWidgets()
const;
176 quintptr currentTabId()
const;
177 void setCurrentTab(QWidget *widget);
178 void setCurrentTabId(quintptr id);
179 QRect tabContentRect()
const;
184 void reparentWidgets(QWidget *p);
185 bool updateTabBar()
const;
186 void setTabBarShape(
int shape);
187 QSize tabBarMinimumSize()
const;
188 QSize tabBarSizeHint()
const;
190 QSet<QTabBar*> usedTabBars()
const;
192 int tabIndexToListIndex(
int)
const;
193 void moveTab(
int from,
int to);
200 enum { EmptyDropAreaSize = 80 };
202 Qt::DockWidgetArea corners[4];
204 QLayoutItem *centralWidgetItem;
205 QMainWindow *mainWindow;
206 QRect centralWidgetRect;
207 QDockAreaLayout(QMainWindow *win);
208 QDockAreaLayoutInfo docks[4];
210 bool fallbackToSizeHints;
211 mutable QList<QWidget *> separatorWidgets;
213 bool isValid()
const;
215 static QRect constrainedRect(QRect rect, QWidget *widget);
216 void saveState(QDataStream &stream)
const;
217 bool restoreState(QDataStream &stream,
const QList<QDockWidget*> &_dockWidgets, QInternal::CallMode callMode);
219 QList<
int> indexOfPlaceHolder(
const QString &objectName)
const;
220 QList<
int> indexOf(
const QWidget *dockWidget)
const;
221 QList<
int> gapIndex(
const QPoint &pos,
bool disallowTabs)
const;
222 QList<
int> findSeparator(
const QPoint &pos)
const;
224 QDockAreaLayoutItem &item(
const QList<
int> &path);
225 QDockAreaLayoutInfo *info(
const QList<
int> &path);
226 const QDockAreaLayoutInfo *info(
const QList<
int> &path)
const;
227 QDockAreaLayoutInfo *info(QWidget *widget);
228 QRect itemRect(
const QList<
int> &path)
const;
229 QRect separatorRect(
int index)
const;
230 QRect separatorRect(
const QList<
int> &path)
const;
232 bool insertGap(
const QList<
int> &path, QLayoutItem *dockWidgetItem);
233 QLayoutItem *plug(
const QList<
int> &path);
234 QLayoutItem *unplug(
const QList<
int> &path);
235 void remove(
const QList<
int> &path);
236 void removePlaceHolder(
const QString &name);
242 QSize sizeHint()
const;
243 QSize minimumSize()
const;
244 QSize minimumStableSize()
const;
245 template<
typename SizePMF,
typename CenterPMF>
246 QSize size_helper(SizePMF sizeFn, CenterPMF centerFn)
const;
248 void addDockWidget(QInternal::DockPosition pos, QDockWidget *dockWidget, Qt::Orientation orientation);
249 bool restoreDockWidget(QDockWidget *dockWidget);
250 void splitDockWidget(QDockWidget *after, QDockWidget *dockWidget,
251 Qt::Orientation orientation);
253 void tabifyDockWidget(QDockWidget *first, QDockWidget *second);
255 void resizeDocks(
const QList<QDockWidget *> &docks,
const QList<
int> &sizes, Qt::Orientation o);
257 void apply(QWidgetAnimator::AnimationRule rule);
259 void paintSeparators(QPainter *p, QWidget *widget,
const QRegion &clip,
260 const QPoint &mouse)
const;
261 QRegion separatorRegion()
const;
262 int separatorMove(
const QList<
int> &separator,
const QPoint &origin,
const QPoint &dest);
264 void updateSeparatorWidgets()
const;
267 QLayoutItem *itemAt(
int *x,
int index)
const;
268 QLayoutItem *takeAt(
int *x,
int index);
269 void deleteAllLayoutItems();
271 void getGrid(QList<QLayoutStruct> *ver_struct_list, QList<QLayoutStruct> *hor_struct_list);
272 void setGrid(QList<QLayoutStruct> *ver_struct_list, QList<QLayoutStruct> *hor_struct_list);
274 QRect gapRect(
const QList<
int> &path)
const;
275 QRect gapRect(QInternal::DockPosition dockPos)
const;
277 void keepSize(QDockWidget *w);
279 QSet<QTabBar*> usedTabBars()
const;
280 QSet<QWidget*> usedSeparatorWidgets()
const;
282 void styleChangedEvent();
static QInternal::DockPosition dockPosHelper(const QRect &rect, const QPoint &_pos, Qt::Orientation o, bool nestingEnabled, QDockAreaLayoutInfo::TabMode tabMode)