qmainwindowlayout.cpp

Absolute File Name:/home/qt/qt5_coco/qt5/qtbase/src/widgets/widgets/qmainwindowlayout.cpp
Source codeSwitch to Preprocessed file
LineSourceCount
1/****************************************************************************-
2**-
3** Copyright (C) 2015 The Qt Company Ltd.-
4** Copyright (C) 2015 Olivier Goffart <ogoffart@woboq.com>-
5** Contact: http://www.qt.io/licensing/-
6**-
7** This file is part of the QtWidgets module of the Qt Toolkit.-
8**-
9** $QT_BEGIN_LICENSE:LGPL21$-
10** Commercial License Usage-
11** Licensees holding valid commercial Qt licenses may use this file in-
12** accordance with the commercial license agreement provided with the-
13** Software or, alternatively, in accordance with the terms contained in-
14** a written agreement between you and The Qt Company. For licensing terms-
15** and conditions see http://www.qt.io/terms-conditions. For further-
16** information use the contact form at http://www.qt.io/contact-us.-
17**-
18** GNU Lesser General Public License Usage-
19** Alternatively, this file may be used under the terms of the GNU Lesser-
20** General Public License version 2.1 or version 3 as published by the Free-
21** Software Foundation and appearing in the file LICENSE.LGPLv21 and-
22** LICENSE.LGPLv3 included in the packaging of this file. Please review the-
23** following information to ensure the GNU Lesser General Public License-
24** requirements will be met: https://www.gnu.org/licenses/lgpl.html and-
25** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.-
26**-
27** As a special exception, The Qt Company gives you certain additional-
28** rights. These rights are described in The Qt Company LGPL Exception-
29** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.-
30**-
31** $QT_END_LICENSE$-
32**-
33****************************************************************************/-
34-
35#include "qmainwindowlayout_p.h"-
36#include "qdockarealayout_p.h"-
37-
38#ifndef QT_NO_MAINWINDOW-
39#include "qdockwidget.h"-
40#include "qdockwidget_p.h"-
41#include "qtoolbar_p.h"-
42#include "qmainwindow.h"-
43#include "qtoolbar.h"-
44#include "qtoolbarlayout_p.h"-
45#include "qwidgetanimator_p.h"-
46#include "qrubberband.h"-
47#include "qtabbar_p.h"-
48-
49#include <qapplication.h>-
50#include <qstatusbar.h>-
51#include <qstring.h>-
52#include <qstyle.h>-
53#include <qstylepainter.h>-
54#include <qvarlengtharray.h>-
55#include <qstack.h>-
56#include <qmap.h>-
57#include <qtimer.h>-
58-
59#ifndef QT_NO_DEBUG_STREAM-
60# include <qdebug.h>-
61# include <qtextstream.h>-
62#endif-
63-
64#include <private/qapplication_p.h>-
65#include <private/qlayoutengine_p.h>-
66#include <private/qwidgetresizehandler_p.h>-
67#ifdef Q_DEAD_CODE_FROM_QT4_MAC-
68# include <private/qcore_mac_p.h>-
69# include <private/qt_cocoa_helpers_mac_p.h>-
70#endif-
71-
72QT_BEGIN_NAMESPACE-
73-
74extern QMainWindowLayout *qt_mainwindow_layout(const QMainWindow *window);-
75-
76/******************************************************************************-
77** debug-
78*/-
79-
80#if !defined(QT_NO_DOCKWIDGET) && !defined(QT_NO_DEBUG_STREAM)-
81-
82static void dumpLayout(QTextStream &qout, const QDockAreaLayoutInfo &layout, QString indent);-
83-
84static void dumpLayout(QTextStream &qout, const QDockAreaLayoutItem &item, QString indent)-
85{-
86 qout << indent << "QDockAreaLayoutItem: "-
87 << "pos: " << item.pos << " size:" << item.size-
88 << " gap:" << (item.flags & QDockAreaLayoutItem::GapItem)-
89 << " keepSize:" << (item.flags & QDockAreaLayoutItem::KeepSize) << '\n';-
90 indent += QLatin1String(" ");-
91 if (item.widgetItem != 0) {
item.widgetItem != 0Description
TRUEnever evaluated
FALSEnever evaluated
0
92 qout << indent << "widget: "-
93 << item.widgetItem->widget()->metaObject()->className()-
94 << " \"" << item.widgetItem->widget()->windowTitle() << "\"\n";-
95 } else if (item.subinfo != 0) {
never executed: end of block
item.subinfo != 0Description
TRUEnever evaluated
FALSEnever evaluated
0
96 qout << indent << "subinfo:\n";-
97 dumpLayout(qout, *item.subinfo, indent + QLatin1String(" "));-
98 } else if (item.placeHolderItem != 0) {
never executed: end of block
item.placeHolderItem != 0Description
TRUEnever evaluated
FALSEnever evaluated
0
99 QRect r = item.placeHolderItem->topLevelRect;-
100 qout << indent << "placeHolder: "-
101 << "pos: " << item.pos << " size:" << item.size-
102 << " gap:" << (item.flags & QDockAreaLayoutItem::GapItem)-
103 << " keepSize:" << (item.flags & QDockAreaLayoutItem::KeepSize)-
104 << " objectName:" << item.placeHolderItem->objectName-
105 << " hidden:" << item.placeHolderItem->hidden-
106 << " window:" << item.placeHolderItem->window-
107 << " rect:" << r.x() << ',' << r.y() << ' '-
108 << r.width() << 'x' << r.height() << '\n';-
109 }
never executed: end of block
0
110}
never executed: end of block
0
111-
112static void dumpLayout(QTextStream &qout, const QDockAreaLayoutInfo &layout, QString indent)-
113{-
114 const QSize minSize = layout.minimumSize();-
115 qout << indent << "QDockAreaLayoutInfo: "-
116 << layout.rect.left() << ','-
117 << layout.rect.top() << ' '-
118 << layout.rect.width() << 'x'-
119 << layout.rect.height()-
120 << " min size: " << minSize.width() << ',' << minSize.height()-
121 << " orient:" << layout.o-
122 << " tabbed:" << layout.tabbed-
123 << " tbshape:" << layout.tabBarShape << '\n';-
124-
125 indent += QLatin1String(" ");-
126-
127 for (int i = 0; i < layout.item_list.count(); ++i) {
i < layout.item_list.count()Description
TRUEnever evaluated
FALSEnever evaluated
0
128 qout << indent << "Item: " << i << '\n';-
129 dumpLayout(qout, layout.item_list.at(i), indent + QLatin1String(" "));-
130 }
never executed: end of block
0
131}
never executed: end of block
0
132-
133static void dumpLayout(QTextStream &qout, const QDockAreaLayout &layout)-
134{-
135 qout << "QDockAreaLayout: "-
136 << layout.rect.left() << ','-
137 << layout.rect.top() << ' '-
138 << layout.rect.width() << 'x'-
139 << layout.rect.height() << '\n';-
140-
141 qout << "TopDockArea:\n";-
142 dumpLayout(qout, layout.docks[QInternal::TopDock], QLatin1String(" "));-
143 qout << "LeftDockArea:\n";-
144 dumpLayout(qout, layout.docks[QInternal::LeftDock], QLatin1String(" "));-
145 qout << "RightDockArea:\n";-
146 dumpLayout(qout, layout.docks[QInternal::RightDock], QLatin1String(" "));-
147 qout << "BottomDockArea:\n";-
148 dumpLayout(qout, layout.docks[QInternal::BottomDock], QLatin1String(" "));-
149}
never executed: end of block
0
150-
151QDebug operator<<(QDebug debug, const QDockAreaLayout &layout)-
152{-
153 QString s;-
154 QTextStream str(&s);-
155 dumpLayout(str, layout);-
156 debug << s;-
157 return debug;
never executed: return debug;
0
158}-
159-
160QDebug operator<<(QDebug debug, const QMainWindowLayout *layout)-
161{-
162 debug << layout->layoutState.dockAreaLayout;-
163 return debug;
never executed: return debug;
0
164}-
165-
166#endif // !defined(QT_NO_DOCKWIDGET) && !defined(QT_NO_DEBUG)-
167-
168/******************************************************************************-
169 ** QDockWidgetGroupWindow-
170 */-
171// QDockWidgetGroupWindow is the floating window containing the tabbed dockwidgets in case several-
172// dockwidgets are dragged together (QMainWindow::GroupedDragging feature).-
173// QDockWidgetGroupLayout is the layout of that window and use a QDockAreaLayoutInfo to layout-
174// the tabs inside it.-
175#ifndef QT_NO_DOCKWIDGET-
176class QDockWidgetGroupLayout : public QLayout {-
177 QDockAreaLayoutInfo info;-
178 QWidgetResizeHandler *resizer;-
179public:-
180 QDockWidgetGroupLayout(QWidget* parent) : QLayout(parent) {-
181 setSizeConstraint(QLayout::SetMinAndMaxSize);-
182 resizer = new QWidgetResizeHandler(parent);-
183 resizer->setMovingEnabled(false);-
184 }
never executed: end of block
0
185 ~QDockWidgetGroupLayout() {-
186 info.deleteAllLayoutItems();-
187 }
never executed: end of block
0
188-
189 void addItem(QLayoutItem*) Q_DECL_OVERRIDE { Q_UNREACHABLE(); }
never executed: end of block
0
190 int count() const Q_DECL_OVERRIDE { return 0; }
never executed: return 0;
0
191 QLayoutItem* itemAt(int index) const Q_DECL_OVERRIDE-
192 {-
193 int x = 0;-
194 return info.itemAt(&x, index);
never executed: return info.itemAt(&x, index);
0
195 }-
196 QLayoutItem* takeAt(int index) Q_DECL_OVERRIDE-
197 {-
198 int x = 0;-
199 return info.takeAt(&x, index);
never executed: return info.takeAt(&x, index);
0
200 }-
201 QSize sizeHint() const Q_DECL_OVERRIDE-
202 {-
203 int fw = frameWidth();-
204 return info.sizeHint() + QSize(fw, fw);
never executed: return info.sizeHint() + QSize(fw, fw);
0
205 }-
206 QSize minimumSize() const Q_DECL_OVERRIDE-
207 {-
208 int fw = frameWidth();-
209 return info.minimumSize() + QSize(fw, fw);
never executed: return info.minimumSize() + QSize(fw, fw);
0
210 }-
211 QSize maximumSize() const Q_DECL_OVERRIDE-
212 {-
213 int fw = frameWidth();-
214 return info.maximumSize() + QSize(fw, fw);
never executed: return info.maximumSize() + QSize(fw, fw);
0
215 }-
216 void setGeometry(const QRect&r) Q_DECL_OVERRIDE-
217 {-
218 static_cast<QDockWidgetGroupWindow *>(parent())->destroyOrHideIfEmpty();-
219 QDockAreaLayoutInfo *li = layoutInfo();-
220 if (li->isEmpty())
li->isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
0
221 return;
never executed: return;
0
222 int fw = frameWidth();-
223 li->reparentWidgets(parentWidget());-
224 li->rect = r.adjusted(fw, fw, -fw, -fw);-
225 li->fitItems();-
226 li->apply(false);-
227 resizer->setActive(QWidgetResizeHandler::Resize, !nativeWindowDeco());-
228 }
never executed: end of block
0
229-
230 QDockAreaLayoutInfo *layoutInfo() {-
231 return &info;
never executed: return &info;
0
232 }-
233-
234 bool nativeWindowDeco() const-
235 {-
236 return QDockWidgetLayout::wmSupportsNativeWindowDeco();
never executed: return QDockWidgetLayout::wmSupportsNativeWindowDeco();
0
237 }-
238-
239 int frameWidth() const-
240 {-
241 return nativeWindowDeco() ? 0 :
never executed: return nativeWindowDeco() ? 0 : parentWidget()->style()->pixelMetric(QStyle::PM_DockWidgetFrameWidth, 0, parentWidget());
nativeWindowDeco()Description
TRUEnever evaluated
FALSEnever evaluated
0
242 parentWidget()->style()->pixelMetric(QStyle::PM_DockWidgetFrameWidth, 0, parentWidget());
never executed: return nativeWindowDeco() ? 0 : parentWidget()->style()->pixelMetric(QStyle::PM_DockWidgetFrameWidth, 0, parentWidget());
0
243 }-
244};-
245-
246bool QDockWidgetGroupWindow::event(QEvent *e)-
247{-
248 switch (e->type()) {-
249 case QEvent::Close:
never executed: case QEvent::Close:
0
250 // Forward the close to the QDockWidget just as if its close button was pressed-
251 if (QDockWidget *dw = topDockWidget()) {
QDockWidget *d...opDockWidget()Description
TRUEnever evaluated
FALSEnever evaluated
0
252 e->ignore();-
253 dw->close();-
254 adjustFlags();-
255 }
never executed: end of block
0
256 return true;
never executed: return true;
0
257 case QEvent::Move:
never executed: case QEvent::Move:
0
258 // Let QDockWidgetPrivate::moseEvent handle the dragging-
259 if (QDockWidget *dw = topDockWidget())
QDockWidget *d...opDockWidget()Description
TRUEnever evaluated
FALSEnever evaluated
0
260 static_cast<QDockWidgetPrivate *>(QObjectPrivate::get(dw))->moveEvent(static_cast<QMoveEvent*>(e));
never executed: static_cast<QDockWidgetPrivate *>(QObjectPrivate::get(dw))->moveEvent(static_cast<QMoveEvent*>(e));
0
261 return true;
never executed: return true;
0
262 case QEvent::NonClientAreaMouseMove:
never executed: case QEvent::NonClientAreaMouseMove:
0
263 case QEvent::NonClientAreaMouseButtonPress:
never executed: case QEvent::NonClientAreaMouseButtonPress:
0
264 case QEvent::NonClientAreaMouseButtonRelease:
never executed: case QEvent::NonClientAreaMouseButtonRelease:
0
265 case QEvent::NonClientAreaMouseButtonDblClick:
never executed: case QEvent::NonClientAreaMouseButtonDblClick:
0
266 // Let the QDockWidgetPrivate of the currently visible dock widget handle the drag and drop-
267 if (QDockWidget *dw = topDockWidget())
QDockWidget *d...opDockWidget()Description
TRUEnever evaluated
FALSEnever evaluated
0
268 static_cast<QDockWidgetPrivate *>(QObjectPrivate::get(dw))->nonClientAreaMouseEvent(static_cast<QMouseEvent*>(e));
never executed: static_cast<QDockWidgetPrivate *>(QObjectPrivate::get(dw))->nonClientAreaMouseEvent(static_cast<QMouseEvent*>(e));
0
269 return true;
never executed: return true;
0
270 case QEvent::ChildAdded:
never executed: case QEvent::ChildAdded:
0
271 if (qobject_cast<QDockWidget *>(static_cast<QChildEvent*>(e)->child()))
qobject_cast<Q...>(e)->child())Description
TRUEnever evaluated
FALSEnever evaluated
0
272 adjustFlags();
never executed: adjustFlags();
0
273 break;
never executed: break;
0
274 case QEvent::LayoutRequest:
never executed: case QEvent::LayoutRequest:
0
275 // We might need to show the widget again-
276 destroyOrHideIfEmpty();-
277 break;
never executed: break;
0
278 default:
never executed: default:
0
279 break;
never executed: break;
0
280 }-
281 return QWidget::event(e);
never executed: return QWidget::event(e);
0
282}-
283-
284void QDockWidgetGroupWindow::paintEvent(QPaintEvent *)-
285{-
286 QDockWidgetGroupLayout *lay = static_cast<QDockWidgetGroupLayout *>(layout());-
287 bool nativeDeco = lay->nativeWindowDeco();-
288-
289 if (!nativeDeco) {
!nativeDecoDescription
TRUEnever evaluated
FALSEnever evaluated
0
290 QStyleOptionFrame framOpt;-
291 framOpt.init(this);-
292 QStylePainter p(this);-
293 p.drawPrimitive(QStyle::PE_FrameDockWidget, framOpt);-
294 }
never executed: end of block
0
295}
never executed: end of block
0
296-
297QDockAreaLayoutInfo *QDockWidgetGroupWindow::layoutInfo() const-
298{-
299 return static_cast<QDockWidgetGroupLayout*>(layout())->layoutInfo();
never executed: return static_cast<QDockWidgetGroupLayout*>(layout())->layoutInfo();
0
300}-
301-
302/*! \internal-
303 Returns the currently active QDockWidget.-
304 */-
305QDockWidget *QDockWidgetGroupWindow::topDockWidget() const-
306{-
307 QDockAreaLayoutInfo *info = layoutInfo();-
308 QDockWidget *dw = 0;-
309 if (info->tabBar && info->tabBar->currentIndex() >= 0) {
info->tabBarDescription
TRUEnever evaluated
FALSEnever evaluated
info->tabBar->...ntIndex() >= 0Description
TRUEnever evaluated
FALSEnever evaluated
0
310 int i = info->tabIndexToListIndex(info->tabBar->currentIndex());-
311 if (i >= 0) {
i >= 0Description
TRUEnever evaluated
FALSEnever evaluated
0
312 const QDockAreaLayoutItem &item = info->item_list.at(i);-
313 if (item.widgetItem)
item.widgetItemDescription
TRUEnever evaluated
FALSEnever evaluated
0
314 dw = qobject_cast<QDockWidget *>(item.widgetItem->widget());
never executed: dw = qobject_cast<QDockWidget *>(item.widgetItem->widget());
0
315 }
never executed: end of block
0
316 }
never executed: end of block
0
317 if (!dw) {
!dwDescription
TRUEnever evaluated
FALSEnever evaluated
0
318 for (int i = 0; !dw && i < info->item_list.count(); ++i) {
!dwDescription
TRUEnever evaluated
FALSEnever evaluated
i < info->item_list.count()Description
TRUEnever evaluated
FALSEnever evaluated
0
319 const QDockAreaLayoutItem &item = info->item_list.at(i);-
320 if (item.skip())
item.skip()Description
TRUEnever evaluated
FALSEnever evaluated
0
321 continue;
never executed: continue;
0
322 if (!item.widgetItem)
!item.widgetItemDescription
TRUEnever evaluated
FALSEnever evaluated
0
323 continue;
never executed: continue;
0
324 dw = qobject_cast<QDockWidget *>(item.widgetItem->widget());-
325 }
never executed: end of block
0
326 }
never executed: end of block
0
327 return dw;
never executed: return dw;
0
328}-
329-
330/*! \internal-
331 Destroy or hide this window if there is no more QDockWidget in it.-
332 Otherwise make sure it is shown.-
333 */-
334void QDockWidgetGroupWindow::destroyOrHideIfEmpty()-
335{-
336 if (!layoutInfo()->isEmpty()) {
!layoutInfo()->isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
0
337 show(); // It might have been hidden,-
338 return;
never executed: return;
0
339 }-
340 // There might still be placeholders-
341 if (!layoutInfo()->item_list.isEmpty()) {
!layoutInfo()-...list.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
0
342 hide();-
343 return;
never executed: return;
0
344 }-
345-
346 // Make sure to reparent the possibly floating or hidden QDockWidgets to the parent-
347 foreach (QDockWidget *dw, findChildren<QDockWidget *>(QString(), Qt::FindDirectChildrenOnly)) {-
348 bool wasFloating = dw->isFloating();-
349 bool wasHidden = dw->isHidden();-
350 dw->setParent(parentWidget());-
351 if (wasFloating) {
wasFloatingDescription
TRUEnever evaluated
FALSEnever evaluated
0
352 dw->setFloating(true);-
353 } else {
never executed: end of block
0
354 // maybe it was hidden, we still have to put it back in the main layout.-
355 QMainWindowLayout *ml =-
356 qt_mainwindow_layout(static_cast<QMainWindow *>(parentWidget()));-
357 Qt::DockWidgetArea area = ml->dockWidgetArea(this);-
358 if (area == Qt::NoDockWidgetArea)
area == Qt::NoDockWidgetAreaDescription
TRUEnever evaluated
FALSEnever evaluated
0
359 area = Qt::LeftDockWidgetArea;
never executed: area = Qt::LeftDockWidgetArea;
0
360 static_cast<QMainWindow *>(parentWidget())->addDockWidget(area, dw);-
361 }
never executed: end of block
0
362 if (!wasHidden)
!wasHiddenDescription
TRUEnever evaluated
FALSEnever evaluated
0
363 dw->show();
never executed: dw->show();
0
364 }
never executed: end of block
0
365 foreach (QTabBar *tb, findChildren<QTabBar *>(QString(), Qt::FindDirectChildrenOnly))-
366 tb->setParent(parentWidget());
never executed: tb->setParent(parentWidget());
0
367 deleteLater();-
368}
never executed: end of block
0
369-
370/*! \internal-
371 Sets the flags of this window in accordence to the capabilities of the dock widgets-
372 */-
373void QDockWidgetGroupWindow::adjustFlags()-
374{-
375 QDockWidget *top = topDockWidget();-
376 if (!top)
!topDescription
TRUEnever evaluated
FALSEnever evaluated
0
377 return;
never executed: return;
0
378 const bool nativeDeco = static_cast<QDockWidgetGroupLayout *>(layout())->nativeWindowDeco();-
379-
380 Qt::WindowFlags oldFlags = windowFlags();-
381 Qt::WindowFlags flags = oldFlags;-
382 if (nativeDeco) {
nativeDecoDescription
TRUEnever evaluated
FALSEnever evaluated
0
383 flags |= Qt::CustomizeWindowHint | Qt::WindowTitleHint;-
384 if (top->features() & QDockWidget::DockWidgetClosable)
top->features(...WidgetClosableDescription
TRUEnever evaluated
FALSEnever evaluated
0
385 flags |= Qt::WindowCloseButtonHint;
never executed: flags |= Qt::WindowCloseButtonHint;
0
386 else-
387 flags &= ~Qt::WindowCloseButtonHint;
never executed: flags &= ~Qt::WindowCloseButtonHint;
0
388 flags &= ~Qt::FramelessWindowHint;-
389 } else {
never executed: end of block
0
390 flags |= Qt::FramelessWindowHint;-
391 }
never executed: end of block
0
392 if (oldFlags != flags) {
oldFlags != flagsDescription
TRUEnever evaluated
FALSEnever evaluated
0
393 setWindowFlags(flags);-
394 show(); // setWindowFlags hides the window-
395 }
never executed: end of block
0
396-
397 setWindowTitle(top->windowTitle());-
398 setWindowIcon(top->windowIcon());-
399}
never executed: end of block
0
400#endif-
401-
402/******************************************************************************-
403** QMainWindowLayoutState-
404*/-
405-
406// we deal with all the #ifndefferry here so QMainWindowLayout code is clean-
407-
408QMainWindowLayoutState::QMainWindowLayoutState(QMainWindow *win)-
409 :-
410#ifndef QT_NO_TOOLBAR-
411 toolBarAreaLayout(win),-
412#endif-
413#ifndef QT_NO_DOCKWIDGET-
414 dockAreaLayout(win)-
415#else-
416 centralWidgetItem(0)-
417#endif-
418-
419{-
420 mainWindow = win;-
421}
never executed: end of block
0
422-
423QSize QMainWindowLayoutState::sizeHint() const-
424{-
425-
426 QSize result(0, 0);-
427-
428#ifndef QT_NO_DOCKWIDGET-
429 result = dockAreaLayout.sizeHint();-
430#else-
431 if (centralWidgetItem != 0)-
432 result = centralWidgetItem->sizeHint();-
433#endif-
434-
435#ifndef QT_NO_TOOLBAR-
436 result = toolBarAreaLayout.sizeHint(result);-
437#endif // QT_NO_TOOLBAR-
438-
439 return result;
never executed: return result;
0
440}-
441-
442QSize QMainWindowLayoutState::minimumSize() const-
443{-
444 QSize result(0, 0);-
445-
446#ifndef QT_NO_DOCKWIDGET-
447 result = dockAreaLayout.minimumSize();-
448#else-
449 if (centralWidgetItem != 0)-
450 result = centralWidgetItem->minimumSize();-
451#endif-
452-
453#ifndef QT_NO_TOOLBAR-
454 result = toolBarAreaLayout.minimumSize(result);-
455#endif // QT_NO_TOOLBAR-
456-
457 return result;
never executed: return result;
0
458}-
459-
460void QMainWindowLayoutState::apply(bool animated)-
461{-
462#ifndef QT_NO_TOOLBAR-
463 toolBarAreaLayout.apply(animated);-
464#endif-
465-
466#ifndef QT_NO_DOCKWIDGET-
467// dumpLayout(dockAreaLayout, QString());-
468 dockAreaLayout.apply(animated);-
469#else-
470 if (centralWidgetItem != 0) {-
471 QMainWindowLayout *layout = qt_mainwindow_layout(mainWindow);-
472 Q_ASSERT(layout != 0);-
473 layout->widgetAnimator.animate(centralWidgetItem->widget(), centralWidgetRect, animated);-
474 }-
475#endif-
476}
never executed: end of block
0
477-
478void QMainWindowLayoutState::fitLayout()-
479{-
480 QRect r;-
481#ifdef QT_NO_TOOLBAR-
482 r = rect;-
483#else-
484 toolBarAreaLayout.rect = rect;-
485 r = toolBarAreaLayout.fitLayout();-
486#endif // QT_NO_TOOLBAR-
487-
488#ifndef QT_NO_DOCKWIDGET-
489 dockAreaLayout.rect = r;-
490 dockAreaLayout.fitLayout();-
491#else-
492 centralWidgetRect = r;-
493#endif-
494}
never executed: end of block
0
495-
496void QMainWindowLayoutState::deleteAllLayoutItems()-
497{-
498#ifndef QT_NO_TOOLBAR-
499 toolBarAreaLayout.deleteAllLayoutItems();-
500#endif-
501-
502#ifndef QT_NO_DOCKWIDGET-
503 dockAreaLayout.deleteAllLayoutItems();-
504#endif-
505}
never executed: end of block
0
506-
507void QMainWindowLayoutState::deleteCentralWidgetItem()-
508{-
509#ifndef QT_NO_DOCKWIDGET-
510 delete dockAreaLayout.centralWidgetItem;-
511 dockAreaLayout.centralWidgetItem = 0;-
512#else-
513 delete centralWidgetItem;-
514 centralWidgetItem = 0;-
515#endif-
516}
never executed: end of block
0
517-
518QLayoutItem *QMainWindowLayoutState::itemAt(int index, int *x) const-
519{-
520#ifndef QT_NO_TOOLBAR-
521 if (QLayoutItem *ret = toolBarAreaLayout.itemAt(x, index))
QLayoutItem *r...emAt(x, index)Description
TRUEnever evaluated
FALSEnever evaluated
0
522 return ret;
never executed: return ret;
0
523#endif-
524-
525#ifndef QT_NO_DOCKWIDGET-
526 if (QLayoutItem *ret = dockAreaLayout.itemAt(x, index))
QLayoutItem *r...emAt(x, index)Description
TRUEnever evaluated
FALSEnever evaluated
0
527 return ret;
never executed: return ret;
0
528#else-
529 if (centralWidgetItem != 0 && (*x)++ == index)-
530 return centralWidgetItem;-
531#endif-
532-
533 return 0;
never executed: return 0;
0
534}-
535-
536QLayoutItem *QMainWindowLayoutState::takeAt(int index, int *x)-
537{-
538#ifndef QT_NO_TOOLBAR-
539 if (QLayoutItem *ret = toolBarAreaLayout.takeAt(x, index))
QLayoutItem *r...keAt(x, index)Description
TRUEnever evaluated
FALSEnever evaluated
0
540 return ret;
never executed: return ret;
0
541#endif-
542-
543#ifndef QT_NO_DOCKWIDGET-
544 if (QLayoutItem *ret = dockAreaLayout.takeAt(x, index))
QLayoutItem *r...keAt(x, index)Description
TRUEnever evaluated
FALSEnever evaluated
0
545 return ret;
never executed: return ret;
0
546#else-
547 if (centralWidgetItem != 0 && (*x)++ == index) {-
548 QLayoutItem *ret = centralWidgetItem;-
549 centralWidgetItem = 0;-
550 return ret;-
551 }-
552#endif-
553-
554 return 0;
never executed: return 0;
0
555}-
556-
557QList<int> QMainWindowLayoutState::indexOf(QWidget *widget) const-
558{-
559 QList<int> result;-
560-
561#ifndef QT_NO_TOOLBAR-
562 // is it a toolbar?-
563 if (QToolBar *toolBar = qobject_cast<QToolBar*>(widget)) {
QToolBar *tool...lBar*>(widget)Description
TRUEnever evaluated
FALSEnever evaluated
0
564 result = toolBarAreaLayout.indexOf(toolBar);-
565 if (!result.isEmpty())
!result.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
0
566 result.prepend(0);
never executed: result.prepend(0);
0
567 return result;
never executed: return result;
0
568 }-
569#endif-
570-
571#ifndef QT_NO_DOCKWIDGET-
572 // is it a dock widget?-
573 if (qobject_cast<QDockWidget *>(widget) || qobject_cast<QDockWidgetGroupWindow *>(widget)) {
qobject_cast<Q...get *>(widget)Description
TRUEnever evaluated
FALSEnever evaluated
qobject_cast<Q...dow *>(widget)Description
TRUEnever evaluated
FALSEnever evaluated
0
574 result = dockAreaLayout.indexOf(widget);-
575 if (!result.isEmpty())
!result.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
0
576 result.prepend(1);
never executed: result.prepend(1);
0
577 return result;
never executed: return result;
0
578 }-
579#endif //QT_NO_DOCKWIDGET-
580-
581 return result;
never executed: return result;
0
582}-
583-
584bool QMainWindowLayoutState::contains(QWidget *widget) const-
585{-
586#ifndef QT_NO_DOCKWIDGET-
587 if (dockAreaLayout.centralWidgetItem != 0 && dockAreaLayout.centralWidgetItem->widget() == widget)
dockAreaLayout...idgetItem != 0Description
TRUEnever evaluated
FALSEnever evaluated
dockAreaLayout...et() == widgetDescription
TRUEnever evaluated
FALSEnever evaluated
0
588 return true;
never executed: return true;
0
589 if (!dockAreaLayout.indexOf(widget).isEmpty())
!dockAreaLayou...get).isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
0
590 return true;
never executed: return true;
0
591#else-
592 if (centralWidgetItem != 0 && centralWidgetItem->widget() == widget)-
593 return true;-
594#endif-
595-
596#ifndef QT_NO_TOOLBAR-
597 if (!toolBarAreaLayout.indexOf(widget).isEmpty())
!toolBarAreaLa...get).isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
0
598 return true;
never executed: return true;
0
599#endif-
600 return false;
never executed: return false;
0
601}-
602-
603void QMainWindowLayoutState::setCentralWidget(QWidget *widget)-
604{-
605 QLayoutItem *item = 0;-
606 //make sure we remove the widget-
607 deleteCentralWidgetItem();-
608-
609 if (widget != 0)
widget != 0Description
TRUEnever evaluated
FALSEnever evaluated
0
610 item = new QWidgetItemV2(widget);
never executed: item = new QWidgetItemV2(widget);
0
611-
612#ifndef QT_NO_DOCKWIDGET-
613 dockAreaLayout.centralWidgetItem = item;-
614#else-
615 centralWidgetItem = item;-
616#endif-
617}
never executed: end of block
0
618-
619QWidget *QMainWindowLayoutState::centralWidget() const-
620{-
621 QLayoutItem *item = 0;-
622-
623#ifndef QT_NO_DOCKWIDGET-
624 item = dockAreaLayout.centralWidgetItem;-
625#else-
626 item = centralWidgetItem;-
627#endif-
628-
629 if (item != 0)
item != 0Description
TRUEnever evaluated
FALSEnever evaluated
0
630 return item->widget();
never executed: return item->widget();
0
631 return 0;
never executed: return 0;
0
632}-
633-
634QList<int> QMainWindowLayoutState::gapIndex(QWidget *widget,-
635 const QPoint &pos) const-
636{-
637 QList<int> result;-
638-
639#ifndef QT_NO_TOOLBAR-
640 // is it a toolbar?-
641 if (qobject_cast<QToolBar*>(widget) != 0) {
qobject_cast<Q...>(widget) != 0Description
TRUEnever evaluated
FALSEnever evaluated
0
642 result = toolBarAreaLayout.gapIndex(pos);-
643 if (!result.isEmpty())
!result.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
0
644 result.prepend(0);
never executed: result.prepend(0);
0
645 return result;
never executed: return result;
0
646 }-
647#endif-
648-
649#ifndef QT_NO_DOCKWIDGET-
650 // is it a dock widget?-
651 if (qobject_cast<QDockWidget *>(widget) != 0
qobject_cast<Q...>(widget) != 0Description
TRUEnever evaluated
FALSEnever evaluated
0
652 || qobject_cast<QDockWidgetGroupWindow *>(widget)) {
qobject_cast<Q...dow *>(widget)Description
TRUEnever evaluated
FALSEnever evaluated
0
653 result = dockAreaLayout.gapIndex(pos);-
654 if (!result.isEmpty())
!result.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
0
655 result.prepend(1);
never executed: result.prepend(1);
0
656 return result;
never executed: return result;
0
657 }-
658#endif //QT_NO_DOCKWIDGET-
659-
660 return result;
never executed: return result;
0
661}-
662-
663bool QMainWindowLayoutState::insertGap(const QList<int> &path, QLayoutItem *item)-
664{-
665 if (path.isEmpty())
path.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
0
666 return false;
never executed: return false;
0
667-
668 int i = path.first();-
669-
670#ifndef QT_NO_TOOLBAR-
671 if (i == 0) {
i == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
672 Q_ASSERT(qobject_cast<QToolBar*>(item->widget()) != 0);-
673 return toolBarAreaLayout.insertGap(path.mid(1), item);
never executed: return toolBarAreaLayout.insertGap(path.mid(1), item);
0
674 }-
675#endif-
676-
677#ifndef QT_NO_DOCKWIDGET-
678 if (i == 1) {
i == 1Description
TRUEnever evaluated
FALSEnever evaluated
0
679 Q_ASSERT(qobject_cast<QDockWidget*>(item->widget()) || qobject_cast<QDockWidgetGroupWindow*>(item->widget()));-
680 return dockAreaLayout.insertGap(path.mid(1), item);
never executed: return dockAreaLayout.insertGap(path.mid(1), item);
0
681 }-
682#endif //QT_NO_DOCKWIDGET-
683-
684 return false;
never executed: return false;
0
685}-
686-
687void QMainWindowLayoutState::remove(const QList<int> &path)-
688{-
689 int i = path.first();-
690-
691#ifndef QT_NO_TOOLBAR-
692 if (i == 0)
i == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
693 toolBarAreaLayout.remove(path.mid(1));
never executed: toolBarAreaLayout.remove(path.mid(1));
0
694#endif-
695-
696#ifndef QT_NO_DOCKWIDGET-
697 if (i == 1)
i == 1Description
TRUEnever evaluated
FALSEnever evaluated
0
698 dockAreaLayout.remove(path.mid(1));
never executed: dockAreaLayout.remove(path.mid(1));
0
699#endif //QT_NO_DOCKWIDGET-
700}
never executed: end of block
0
701-
702void QMainWindowLayoutState::remove(QLayoutItem *item)-
703{-
704#ifndef QT_NO_TOOLBAR-
705 toolBarAreaLayout.remove(item);-
706#endif-
707-
708#ifndef QT_NO_DOCKWIDGET-
709 // is it a dock widget?-
710 if (QDockWidget *dockWidget = qobject_cast<QDockWidget *>(item->widget())) {
QDockWidget *d...tem->widget())Description
TRUEnever evaluated
FALSEnever evaluated
0
711 QList<int> path = dockAreaLayout.indexOf(dockWidget);-
712 if (!path.isEmpty())
!path.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
0
713 dockAreaLayout.remove(path);
never executed: dockAreaLayout.remove(path);
0
714 }
never executed: end of block
0
715#endif //QT_NO_DOCKWIDGET-
716}
never executed: end of block
0
717-
718void QMainWindowLayoutState::clear()-
719{-
720#ifndef QT_NO_TOOLBAR-
721 toolBarAreaLayout.clear();-
722#endif-
723-
724#ifndef QT_NO_DOCKWIDGET-
725 dockAreaLayout.clear();-
726#else-
727 centralWidgetRect = QRect();-
728#endif-
729-
730 rect = QRect();-
731}
never executed: end of block
0
732-
733bool QMainWindowLayoutState::isValid() const-
734{-
735 return rect.isValid();
never executed: return rect.isValid();
0
736}-
737-
738QLayoutItem *QMainWindowLayoutState::item(const QList<int> &path)-
739{-
740 int i = path.first();-
741-
742#ifndef QT_NO_TOOLBAR-
743 if (i == 0) {
i == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
744 const QToolBarAreaLayoutItem *tbItem = toolBarAreaLayout.item(path.mid(1));-
745 Q_ASSERT(tbItem);-
746 return tbItem->widgetItem;
never executed: return tbItem->widgetItem;
0
747 }-
748#endif-
749-
750#ifndef QT_NO_DOCKWIDGET-
751 if (i == 1)
i == 1Description
TRUEnever evaluated
FALSEnever evaluated
0
752 return dockAreaLayout.item(path.mid(1)).widgetItem;
never executed: return dockAreaLayout.item(path.mid(1)).widgetItem;
0
753#endif //QT_NO_DOCKWIDGET-
754-
755 return 0;
never executed: return 0;
0
756}-
757-
758QRect QMainWindowLayoutState::itemRect(const QList<int> &path) const-
759{-
760 int i = path.first();-
761-
762#ifndef QT_NO_TOOLBAR-
763 if (i == 0)
i == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
764 return toolBarAreaLayout.itemRect(path.mid(1));
never executed: return toolBarAreaLayout.itemRect(path.mid(1));
0
765#endif-
766-
767#ifndef QT_NO_DOCKWIDGET-
768 if (i == 1)
i == 1Description
TRUEnever evaluated
FALSEnever evaluated
0
769 return dockAreaLayout.itemRect(path.mid(1));
never executed: return dockAreaLayout.itemRect(path.mid(1));
0
770#endif //QT_NO_DOCKWIDGET-
771-
772 return QRect();
never executed: return QRect();
0
773}-
774-
775QRect QMainWindowLayoutState::gapRect(const QList<int> &path) const-
776{-
777 int i = path.first();-
778-
779#ifndef QT_NO_TOOLBAR-
780 if (i == 0)
i == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
781 return toolBarAreaLayout.itemRect(path.mid(1));
never executed: return toolBarAreaLayout.itemRect(path.mid(1));
0
782#endif-
783-
784#ifndef QT_NO_DOCKWIDGET-
785 if (i == 1)
i == 1Description
TRUEnever evaluated
FALSEnever evaluated
0
786 return dockAreaLayout.gapRect(path.mid(1));
never executed: return dockAreaLayout.gapRect(path.mid(1));
0
787#endif //QT_NO_DOCKWIDGET-
788-
789 return QRect();
never executed: return QRect();
0
790}-
791-
792QLayoutItem *QMainWindowLayoutState::plug(const QList<int> &path)-
793{-
794 int i = path.first();-
795-
796#ifndef QT_NO_TOOLBAR-
797 if (i == 0)
i == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
798 return toolBarAreaLayout.plug(path.mid(1));
never executed: return toolBarAreaLayout.plug(path.mid(1));
0
799#endif-
800-
801#ifndef QT_NO_DOCKWIDGET-
802 if (i == 1)
i == 1Description
TRUEnever evaluated
FALSEnever evaluated
0
803 return dockAreaLayout.plug(path.mid(1));
never executed: return dockAreaLayout.plug(path.mid(1));
0
804#endif //QT_NO_DOCKWIDGET-
805-
806 return 0;
never executed: return 0;
0
807}-
808-
809QLayoutItem *QMainWindowLayoutState::unplug(const QList<int> &path, QMainWindowLayoutState *other)-
810{-
811 int i = path.first();-
812-
813#ifdef QT_NO_TOOLBAR-
814 Q_UNUSED(other);-
815#else-
816 if (i == 0)
i == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
817 return toolBarAreaLayout.unplug(path.mid(1), other ? &other->toolBarAreaLayout : 0);
never executed: return toolBarAreaLayout.unplug(path.mid(1), other ? &other->toolBarAreaLayout : 0);
0
818#endif-
819-
820#ifndef QT_NO_DOCKWIDGET-
821 if (i == 1)
i == 1Description
TRUEnever evaluated
FALSEnever evaluated
0
822 return dockAreaLayout.unplug(path.mid(1));
never executed: return dockAreaLayout.unplug(path.mid(1));
0
823#endif //QT_NO_DOCKWIDGET-
824-
825 return 0;
never executed: return 0;
0
826}-
827-
828void QMainWindowLayoutState::saveState(QDataStream &stream) const-
829{-
830#ifndef QT_NO_DOCKWIDGET-
831 dockAreaLayout.saveState(stream);-
832#ifndef QT_NO_TABBAR-
833 QList<QDockWidgetGroupWindow *> floatingTabs =-
834 mainWindow->findChildren<QDockWidgetGroupWindow *>(QString(), Qt::FindDirectChildrenOnly);-
835-
836 foreach (QDockWidgetGroupWindow *floating, floatingTabs) {-
837 if (floating->layoutInfo()->isEmpty())
floating->layo...o()->isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
0
838 continue;
never executed: continue;
0
839 stream << uchar(QDockAreaLayout::FloatingDockWidgetTabMarker) << floating->geometry();-
840 floating->layoutInfo()->saveState(stream);-
841 }
never executed: end of block
0
842#endif-
843#endif-
844#ifndef QT_NO_TOOLBAR-
845 toolBarAreaLayout.saveState(stream);-
846#endif-
847}
never executed: end of block
0
848-
849template <typename T>-
850static QList<T> findChildrenHelper(const QObject *o)-
851{-
852 const QObjectList &list = o->children();-
853 QList<T> result;-
854-
855 for (int i=0; i < list.size(); ++i) {
i < list.size()Description
TRUEnever evaluated
FALSEnever evaluated
0
856 if (T t = qobject_cast<T>(list[i])) {
T t = qobject_cast<T>(list[i])Description
TRUEnever evaluated
FALSEnever evaluated
0
857 result.append(t);-
858 }
never executed: end of block
0
859 }
never executed: end of block
0
860-
861 return result;
never executed: return result;
0
862}-
863-
864//pre4.3 tests the format that was used before 4.3-
865bool QMainWindowLayoutState::checkFormat(QDataStream &stream)-
866{-
867 while (!stream.atEnd()) {
!stream.atEnd()Description
TRUEnever evaluated
FALSEnever evaluated
0
868 uchar marker;-
869 stream >> marker;-
870 switch(marker)-
871 {-
872#ifndef QT_NO_TOOLBAR-
873 case QToolBarAreaLayout::ToolBarStateMarker:
never executed: case QToolBarAreaLayout::ToolBarStateMarker:
0
874 case QToolBarAreaLayout::ToolBarStateMarkerEx:
never executed: case QToolBarAreaLayout::ToolBarStateMarkerEx:
0
875 {-
876 QList<QToolBar *> toolBars = findChildrenHelper<QToolBar*>(mainWindow);-
877 if (!toolBarAreaLayout.restoreState(stream, toolBars, marker, true /*testing*/)) {
!toolBarAreaLa...marker, true )Description
TRUEnever evaluated
FALSEnever evaluated
0
878 return false;
never executed: return false;
0
879 }-
880 }-
881 break;
never executed: break;
0
882#endif // QT_NO_TOOLBAR-
883-
884#ifndef QT_NO_DOCKWIDGET-
885 case QDockAreaLayout::DockWidgetStateMarker:
never executed: case QDockAreaLayout::DockWidgetStateMarker:
0
886 {-
887 QList<QDockWidget *> dockWidgets = findChildrenHelper<QDockWidget*>(mainWindow);-
888 foreach (QDockWidgetGroupWindow *floating, findChildrenHelper<QDockWidgetGroupWindow*>(mainWindow))-
889 dockWidgets += findChildrenHelper<QDockWidget*>(floating);
never executed: dockWidgets += findChildrenHelper<QDockWidget*>(floating);
0
890 if (!dockAreaLayout.restoreState(stream, dockWidgets, true /*testing*/)) {
!dockAreaLayou...idgets, true )Description
TRUEnever evaluated
FALSEnever evaluated
0
891 return false;
never executed: return false;
0
892 }-
893 }-
894 break;
never executed: break;
0
895#ifndef QT_NO_TABBAR-
896 case QDockAreaLayout::FloatingDockWidgetTabMarker:
never executed: case QDockAreaLayout::FloatingDockWidgetTabMarker:
0
897 {-
898 QRect geom;-
899 stream >> geom;-
900 QDockAreaLayoutInfo info;-
901 QList<QDockWidget *> dockWidgets = findChildrenHelper<QDockWidget*>(mainWindow);-
902 foreach (QDockWidgetGroupWindow *floating, findChildrenHelper<QDockWidgetGroupWindow*>(mainWindow))-
903 dockWidgets += findChildrenHelper<QDockWidget*>(floating);
never executed: dockWidgets += findChildrenHelper<QDockWidget*>(floating);
0
904 if (!info.restoreState(stream, dockWidgets, true /* testing*/))
!info.restoreS...idgets, true )Description
TRUEnever evaluated
FALSEnever evaluated
0
905 return false;
never executed: return false;
0
906 }-
907 break;
never executed: break;
0
908#endif // QT_NO_TABBAR-
909#endif // QT_NO_DOCKWIDGET-
910 default:
never executed: default:
0
911 //there was an error during the parsing-
912 return false;
never executed: return false;
0
913 }// switch-
914 } //while-
915-
916 //everything went fine: it must be a pre-4.3 saved state-
917 return true;
never executed: return true;
0
918}-
919-
920bool QMainWindowLayoutState::restoreState(QDataStream &_stream,-
921 const QMainWindowLayoutState &oldState)-
922{-
923 //make a copy of the data so that we can read it more than once-
924 QByteArray copy;-
925 while(!_stream.atEnd()) {
!_stream.atEnd()Description
TRUEnever evaluated
FALSEnever evaluated
0
926 int length = 1024;-
927 QByteArray ba(length, '\0');-
928 length = _stream.readRawData(ba.data(), ba.size());-
929 ba.resize(length);-
930 copy += ba;-
931 }
never executed: end of block
0
932-
933 QDataStream ds(copy);-
934 if (!checkFormat(ds))
!checkFormat(ds)Description
TRUEnever evaluated
FALSEnever evaluated
0
935 return false;
never executed: return false;
0
936-
937 QDataStream stream(copy);-
938-
939 while (!stream.atEnd()) {
!stream.atEnd()Description
TRUEnever evaluated
FALSEnever evaluated
0
940 uchar marker;-
941 stream >> marker;-
942 switch(marker)-
943 {-
944#ifndef QT_NO_DOCKWIDGET-
945 case QDockAreaLayout::DockWidgetStateMarker:
never executed: case QDockAreaLayout::DockWidgetStateMarker:
0
946 {-
947 QList<QDockWidget *> dockWidgets = findChildrenHelper<QDockWidget*>(mainWindow);-
948 foreach (QDockWidgetGroupWindow *floating, findChildrenHelper<QDockWidgetGroupWindow*>(mainWindow))-
949 dockWidgets += findChildrenHelper<QDockWidget*>(floating);
never executed: dockWidgets += findChildrenHelper<QDockWidget*>(floating);
0
950 if (!dockAreaLayout.restoreState(stream, dockWidgets))
!dockAreaLayou..., dockWidgets)Description
TRUEnever evaluated
FALSEnever evaluated
0
951 return false;
never executed: return false;
0
952-
953 for (int i = 0; i < dockWidgets.size(); ++i) {
i < dockWidgets.size()Description
TRUEnever evaluated
FALSEnever evaluated
0
954 QDockWidget *w = dockWidgets.at(i);-
955 QList<int> path = dockAreaLayout.indexOf(w);-
956 if (path.isEmpty()) {
path.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
0
957 QList<int> oldPath = oldState.dockAreaLayout.indexOf(w);-
958 if (oldPath.isEmpty()) {
oldPath.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
0
959 continue;
never executed: continue;
0
960 }-
961 QDockAreaLayoutInfo *info = dockAreaLayout.info(oldPath);-
962 if (info == 0) {
info == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
963 continue;
never executed: continue;
0
964 }-
965 info->item_list.append(QDockAreaLayoutItem(new QDockWidgetItem(w)));-
966 }
never executed: end of block
0
967 }
never executed: end of block
0
968 }-
969 break;
never executed: break;
0
970#ifndef QT_NO_TABBAR-
971 case QDockAreaLayout::FloatingDockWidgetTabMarker:
never executed: case QDockAreaLayout::FloatingDockWidgetTabMarker:
0
972 {-
973 QList<QDockWidget *> dockWidgets = findChildrenHelper<QDockWidget*>(mainWindow);-
974 foreach (QDockWidgetGroupWindow *floating, findChildrenHelper<QDockWidgetGroupWindow*>(mainWindow))-
975 dockWidgets += findChildrenHelper<QDockWidget*>(floating);
never executed: dockWidgets += findChildrenHelper<QDockWidget*>(floating);
0
976 QDockWidgetGroupWindow* floatingTab = qt_mainwindow_layout(mainWindow)->createTabbedDockWindow();-
977 *floatingTab->layoutInfo() = QDockAreaLayoutInfo(&dockAreaLayout.sep, QInternal::LeftDock,-
978 Qt::Horizontal, QTabBar::RoundedSouth, mainWindow);-
979 QRect geometry;-
980 stream >> geometry;-
981 if (!floatingTab->layoutInfo()->restoreState(stream, dockWidgets, false))
!floatingTab->...idgets, false)Description
TRUEnever evaluated
FALSEnever evaluated
0
982 return false;
never executed: return false;
0
983 geometry = QDockAreaLayout::constrainedRect(geometry, floatingTab);-
984 floatingTab->move(geometry.topLeft());-
985 floatingTab->resize(geometry.size());-
986 floatingTab->show();-
987 }-
988 break;
never executed: break;
0
989#endif // QT_NO_TABBAR-
990#endif // QT_NO_DOCKWIDGET-
991-
992#ifndef QT_NO_TOOLBAR-
993 case QToolBarAreaLayout::ToolBarStateMarker:
never executed: case QToolBarAreaLayout::ToolBarStateMarker:
0
994 case QToolBarAreaLayout::ToolBarStateMarkerEx:
never executed: case QToolBarAreaLayout::ToolBarStateMarkerEx:
0
995 {-
996 QList<QToolBar *> toolBars = findChildrenHelper<QToolBar*>(mainWindow);-
997 if (!toolBarAreaLayout.restoreState(stream, toolBars, marker))
!toolBarAreaLa...lBars, marker)Description
TRUEnever evaluated
FALSEnever evaluated
0
998 return false;
never executed: return false;
0
999-
1000 for (int i = 0; i < toolBars.size(); ++i) {
i < toolBars.size()Description
TRUEnever evaluated
FALSEnever evaluated
0
1001 QToolBar *w = toolBars.at(i);-
1002 QList<int> path = toolBarAreaLayout.indexOf(w);-
1003 if (path.isEmpty()) {
path.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
0
1004 QList<int> oldPath = oldState.toolBarAreaLayout.indexOf(w);-
1005 if (oldPath.isEmpty()) {
oldPath.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
0
1006 continue;
never executed: continue;
0
1007 }-
1008 toolBarAreaLayout.docks[oldPath.at(0)].insertToolBar(0, w);-
1009 }
never executed: end of block
0
1010 }
never executed: end of block
0
1011 }-
1012 break;
never executed: break;
0
1013#endif //QT_NO_TOOLBAR-
1014 default:
never executed: default:
0
1015 return false;
never executed: return false;
0
1016 }// switch-
1017 } //while-
1018-
1019-
1020 return true;
never executed: return true;
0
1021}-
1022-
1023/******************************************************************************-
1024** QMainWindowLayoutState - toolbars-
1025*/-
1026-
1027#ifndef QT_NO_TOOLBAR-
1028-
1029static inline void validateToolBarArea(Qt::ToolBarArea &area)-
1030{-
1031 switch (area) {-
1032 case Qt::LeftToolBarArea:
never executed: case Qt::LeftToolBarArea:
0
1033 case Qt::RightToolBarArea:
never executed: case Qt::RightToolBarArea:
0
1034 case Qt::TopToolBarArea:
never executed: case Qt::TopToolBarArea:
0
1035 case Qt::BottomToolBarArea:
never executed: case Qt::BottomToolBarArea:
0
1036 break;
never executed: break;
0
1037 default:
never executed: default:
0
1038 area = Qt::TopToolBarArea;-
1039 }
never executed: end of block
0
1040}-
1041-
1042static QInternal::DockPosition toDockPos(Qt::ToolBarArea area)-
1043{-
1044 switch (area) {-
1045 case Qt::LeftToolBarArea: return QInternal::LeftDock;
never executed: return QInternal::LeftDock;
never executed: case Qt::LeftToolBarArea:
0
1046 case Qt::RightToolBarArea: return QInternal::RightDock;
never executed: return QInternal::RightDock;
never executed: case Qt::RightToolBarArea:
0
1047 case Qt::TopToolBarArea: return QInternal::TopDock;
never executed: return QInternal::TopDock;
never executed: case Qt::TopToolBarArea:
0
1048 case Qt::BottomToolBarArea: return QInternal::BottomDock;
never executed: return QInternal::BottomDock;
never executed: case Qt::BottomToolBarArea:
0
1049 default:
never executed: default:
0
1050 break;
never executed: break;
0
1051 }-
1052-
1053 return QInternal::DockCount;
never executed: return QInternal::DockCount;
0
1054}-
1055-
1056static Qt::ToolBarArea toToolBarArea(QInternal::DockPosition pos)-
1057{-
1058 switch (pos) {-
1059 case QInternal::LeftDock: return Qt::LeftToolBarArea;
never executed: return Qt::LeftToolBarArea;
never executed: case QInternal::LeftDock:
0
1060 case QInternal::RightDock: return Qt::RightToolBarArea;
never executed: return Qt::RightToolBarArea;
never executed: case QInternal::RightDock:
0
1061 case QInternal::TopDock: return Qt::TopToolBarArea;
never executed: return Qt::TopToolBarArea;
never executed: case QInternal::TopDock:
0
1062 case QInternal::BottomDock: return Qt::BottomToolBarArea;
never executed: return Qt::BottomToolBarArea;
never executed: case QInternal::BottomDock:
0
1063 default: break;
never executed: break;
never executed: default:
0
1064 }-
1065 return Qt::NoToolBarArea;
never executed: return Qt::NoToolBarArea;
0
1066}-
1067-
1068static inline Qt::ToolBarArea toToolBarArea(int pos)-
1069{-
1070 return toToolBarArea(static_cast<QInternal::DockPosition>(pos));
never executed: return toToolBarArea(static_cast<QInternal::DockPosition>(pos));
0
1071}-
1072-
1073void QMainWindowLayout::addToolBarBreak(Qt::ToolBarArea area)-
1074{-
1075 validateToolBarArea(area);-
1076-
1077 layoutState.toolBarAreaLayout.addToolBarBreak(toDockPos(area));-
1078 if (savedState.isValid())
savedState.isValid()Description
TRUEnever evaluated
FALSEnever evaluated
0
1079 savedState.toolBarAreaLayout.addToolBarBreak(toDockPos(area));
never executed: savedState.toolBarAreaLayout.addToolBarBreak(toDockPos(area));
0
1080-
1081 invalidate();-
1082}
never executed: end of block
0
1083-
1084void QMainWindowLayout::insertToolBarBreak(QToolBar *before)-
1085{-
1086 layoutState.toolBarAreaLayout.insertToolBarBreak(before);-
1087 if (savedState.isValid())
savedState.isValid()Description
TRUEnever evaluated
FALSEnever evaluated
0
1088 savedState.toolBarAreaLayout.insertToolBarBreak(before);
never executed: savedState.toolBarAreaLayout.insertToolBarBreak(before);
0
1089 invalidate();-
1090}
never executed: end of block
0
1091-
1092void QMainWindowLayout::removeToolBarBreak(QToolBar *before)-
1093{-
1094 layoutState.toolBarAreaLayout.removeToolBarBreak(before);-
1095 if (savedState.isValid())
savedState.isValid()Description
TRUEnever evaluated
FALSEnever evaluated
0
1096 savedState.toolBarAreaLayout.removeToolBarBreak(before);
never executed: savedState.toolBarAreaLayout.removeToolBarBreak(before);
0
1097 invalidate();-
1098}
never executed: end of block
0
1099-
1100void QMainWindowLayout::moveToolBar(QToolBar *toolbar, int pos)-
1101{-
1102 layoutState.toolBarAreaLayout.moveToolBar(toolbar, pos);-
1103 if (savedState.isValid())
savedState.isValid()Description
TRUEnever evaluated
FALSEnever evaluated
0
1104 savedState.toolBarAreaLayout.moveToolBar(toolbar, pos);
never executed: savedState.toolBarAreaLayout.moveToolBar(toolbar, pos);
0
1105 invalidate();-
1106}
never executed: end of block
0
1107-
1108/* Removes the toolbar from the mainwindow so that it can be added again. Does not-
1109 explicitly hide the toolbar. */-
1110void QMainWindowLayout::removeToolBar(QToolBar *toolbar)-
1111{-
1112 if (toolbar) {
toolbarDescription
TRUEnever evaluated
FALSEnever evaluated
0
1113 QObject::disconnect(parentWidget(), SIGNAL(iconSizeChanged(QSize)),-
1114 toolbar, SLOT(_q_updateIconSize(QSize)));-
1115 QObject::disconnect(parentWidget(), SIGNAL(toolButtonStyleChanged(Qt::ToolButtonStyle)),-
1116 toolbar, SLOT(_q_updateToolButtonStyle(Qt::ToolButtonStyle)));-
1117-
1118#ifdef Q_DEAD_CODE_FROM_QT4_MAC-
1119 if (usesHIToolBar(toolbar)) {-
1120 removeFromMacToolbar(toolbar);-
1121 } else-
1122#endif // Q_DEAD_CODE_FROM_QT4_MAC-
1123 {-
1124 removeWidget(toolbar);-
1125 }-
1126 }
never executed: end of block
0
1127}
never executed: end of block
0
1128-
1129/*!-
1130 Adds \a toolbar to \a area, continuing the current line.-
1131*/-
1132void QMainWindowLayout::addToolBar(Qt::ToolBarArea area,-
1133 QToolBar *toolbar,-
1134 bool)-
1135{-
1136 validateToolBarArea(area);-
1137#ifdef Q_DEAD_CODE_FROM_QT4_MAC-
1138 if ((area == Qt::TopToolBarArea)-
1139 && layoutState.mainWindow->unifiedTitleAndToolBarOnMac()) {-
1140 insertIntoMacToolbar(0, toolbar);-
1141 } else-
1142#endif-
1143 {-
1144 //let's add the toolbar to the layout-
1145 addChildWidget(toolbar);-
1146 QLayoutItem * item = layoutState.toolBarAreaLayout.addToolBar(toDockPos(area), toolbar);-
1147 if (savedState.isValid() && item) {
savedState.isValid()Description
TRUEnever evaluated
FALSEnever evaluated
itemDescription
TRUEnever evaluated
FALSEnever evaluated
0
1148 // copy the toolbar also in the saved state-
1149 savedState.toolBarAreaLayout.insertItem(toDockPos(area), item);-
1150 }
never executed: end of block
0
1151 invalidate();-
1152-
1153 //this ensures that the toolbar has the right window flags (not floating any more)-
1154 toolbar->d_func()->updateWindowFlags(false /*floating*/);-
1155 }-
1156}
never executed: end of block
0
1157-
1158/*!-
1159 Adds \a toolbar before \a before-
1160*/-
1161void QMainWindowLayout::insertToolBar(QToolBar *before, QToolBar *toolbar)-
1162{-
1163#ifdef Q_DEAD_CODE_FROM_QT4_MAC-
1164 if (usesHIToolBar(before)) {-
1165 insertIntoMacToolbar(before, toolbar);-
1166 } else-
1167#endif // Q_DEAD_CODE_FROM_QT4_MAC-
1168 {-
1169 addChildWidget(toolbar);-
1170 QLayoutItem * item = layoutState.toolBarAreaLayout.insertToolBar(before, toolbar);-
1171 if (savedState.isValid() && item) {
savedState.isValid()Description
TRUEnever evaluated
FALSEnever evaluated
itemDescription
TRUEnever evaluated
FALSEnever evaluated
0
1172 // copy the toolbar also in the saved state-
1173 savedState.toolBarAreaLayout.insertItem(before, item);-
1174 }
never executed: end of block
0
1175 if (!currentGapPos.isEmpty() && currentGapPos.first() == 0) {
!currentGapPos.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
currentGapPos.first() == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1176 currentGapPos = layoutState.toolBarAreaLayout.currentGapIndex();-
1177 if (!currentGapPos.isEmpty()) {
!currentGapPos.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
0
1178 currentGapPos.prepend(0);-
1179 currentGapRect = layoutState.itemRect(currentGapPos);-
1180 }
never executed: end of block
0
1181 }
never executed: end of block
0
1182 invalidate();-
1183 }-
1184}
never executed: end of block
0
1185-
1186Qt::ToolBarArea QMainWindowLayout::toolBarArea(QToolBar *toolbar) const-
1187{-
1188 QInternal::DockPosition pos = layoutState.toolBarAreaLayout.findToolBar(toolbar);-
1189 switch (pos) {-
1190 case QInternal::LeftDock: return Qt::LeftToolBarArea;
never executed: return Qt::LeftToolBarArea;
never executed: case QInternal::LeftDock:
0
1191 case QInternal::RightDock: return Qt::RightToolBarArea;
never executed: return Qt::RightToolBarArea;
never executed: case QInternal::RightDock:
0
1192 case QInternal::TopDock: return Qt::TopToolBarArea;
never executed: return Qt::TopToolBarArea;
never executed: case QInternal::TopDock:
0
1193 case QInternal::BottomDock: return Qt::BottomToolBarArea;
never executed: return Qt::BottomToolBarArea;
never executed: case QInternal::BottomDock:
0
1194 default: break;
never executed: break;
never executed: default:
0
1195 }-
1196#ifdef Q_DEAD_CODE_FROM_QT4_MAC-
1197 if (pos == QInternal::DockCount) {-
1198 if (qtoolbarsInUnifiedToolbarList.contains(toolbar))-
1199 return Qt::TopToolBarArea;-
1200 }-
1201#endif-
1202 return Qt::NoToolBarArea;
never executed: return Qt::NoToolBarArea;
0
1203}-
1204-
1205bool QMainWindowLayout::toolBarBreak(QToolBar *toolBar) const-
1206{-
1207 return layoutState.toolBarAreaLayout.toolBarBreak(toolBar);
never executed: return layoutState.toolBarAreaLayout.toolBarBreak(toolBar);
0
1208}-
1209-
1210void QMainWindowLayout::getStyleOptionInfo(QStyleOptionToolBar *option, QToolBar *toolBar) const-
1211{-
1212 option->toolBarArea = toolBarArea(toolBar);-
1213 layoutState.toolBarAreaLayout.getStyleOptionInfo(option, toolBar);-
1214}
never executed: end of block
0
1215-
1216void QMainWindowLayout::toggleToolBarsVisible()-
1217{-
1218 bool updateNonUnifiedParts = true;-
1219#ifdef Q_DEAD_CODE_FROM_QT4_MAC-
1220 if (layoutState.mainWindow->unifiedTitleAndToolBarOnMac()) {-
1221 // If we hit this case, someone has pressed the "toolbar button" which will-
1222 // toggle the unified toolbar visibility, because that's what the user wants.-
1223 // We might be in a situation where someone has hidden all the toolbars-
1224 // beforehand (maybe in construction), but now they've hit this button and-
1225 // and are expecting the items to show. What do we do?-
1226 // 1) Check the visibility of all the toolbars, if one is visible, do nothing, this-
1227 // preserves what people would expect (these toolbars were visible when I clicked last time).-
1228 // 2) If NONE are visible, then show them all. Again, this preserves the user expectation-
1229 // of, "I want to see the toolbars." The user may get more toolbars than expected, but this-
1230 // is better seeing nothing.-
1231 // Don't worry about any of this if we are going invisible. This does mean we may get-
1232 // into issues when switching into and out of fullscreen mode, but this is probably minor.-
1233 // If we ever need to do hiding, that would have to be taken care of after the unified toolbar-
1234 // has finished hiding.-
1235 // People can of course handle the QEvent::ToolBarChange event themselves and do-
1236 // WHATEVER they want if they don't like what we are doing (though the unified toolbar-
1237 // will fire regardless).-
1238-
1239 // Check if we REALLY need to update the geometry below. If we only have items in the-
1240 // unified toolbar, all the docks will be empty, so there's very little point-
1241 // in doing the geometry as Apple will do it (we also avoid flicker in Cocoa as well).-
1242 // FWIW, layoutState.toolBarAreaLayout.visible and the state of the unified toolbar-
1243 // visibility can get out of sync. I really don't think it's a big issue. It is kept-
1244 // to a minimum because we only change the visibility if we absolutely must.-
1245 // update the "non unified parts."-
1246 updateNonUnifiedParts = !layoutState.toolBarAreaLayout.isEmpty();-
1247-
1248 // We get this function before the unified toolbar does its thing.-
1249 // So, the value will be opposite of what we expect.-
1250 bool goingVisible = !macWindowToolbarIsVisible(qt_mac_window_for(layoutState.mainWindow));-
1251 if (goingVisible) {-
1252 const int ToolBarCount = qtoolbarsInUnifiedToolbarList.size();-
1253 bool needAllVisible = true;-
1254 for (int i = 0; i < ToolBarCount; ++i) {-
1255 if (!qtoolbarsInUnifiedToolbarList.at(i)->isHidden()) {-
1256 needAllVisible = false;-
1257 break;-
1258 }-
1259 }-
1260 if (needAllVisible) {-
1261 QBoolBlocker blocker(blockVisiblityCheck); // Disable the visibilty check because-
1262 // the toggle has already happened.-
1263 for (int i = 0; i < ToolBarCount; ++i)-
1264 qtoolbarsInUnifiedToolbarList.at(i)->setVisible(true);-
1265 }-
1266 }-
1267 if (!updateNonUnifiedParts)-
1268 layoutState.toolBarAreaLayout.visible = goingVisible;-
1269 }-
1270#endif-
1271 if (updateNonUnifiedParts) {
updateNonUnifiedPartsDescription
TRUEnever evaluated
FALSEnever evaluated
0
1272 layoutState.toolBarAreaLayout.visible = !layoutState.toolBarAreaLayout.visible;-
1273 if (!layoutState.mainWindow->isMaximized()) {
!layoutState.m...>isMaximized()Description
TRUEnever evaluated
FALSEnever evaluated
0
1274 QPoint topLeft = parentWidget()->geometry().topLeft();-
1275 QRect r = parentWidget()->geometry();-
1276 r = layoutState.toolBarAreaLayout.rectHint(r);-
1277 r.moveTo(topLeft);-
1278 parentWidget()->setGeometry(r);-
1279 } else {
never executed: end of block
0
1280 update();-
1281 }
never executed: end of block
0
1282 }-
1283}
never executed: end of block
0
1284-
1285#endif // QT_NO_TOOLBAR-
1286-
1287/******************************************************************************-
1288** QMainWindowLayoutState - dock areas-
1289*/-
1290-
1291#ifndef QT_NO_DOCKWIDGET-
1292-
1293static QInternal::DockPosition toDockPos(Qt::DockWidgetArea area)-
1294{-
1295 switch (area) {-
1296 case Qt::LeftDockWidgetArea: return QInternal::LeftDock;
never executed: return QInternal::LeftDock;
never executed: case Qt::LeftDockWidgetArea:
0
1297 case Qt::RightDockWidgetArea: return QInternal::RightDock;
never executed: return QInternal::RightDock;
never executed: case Qt::RightDockWidgetArea:
0
1298 case Qt::TopDockWidgetArea: return QInternal::TopDock;
never executed: return QInternal::TopDock;
never executed: case Qt::TopDockWidgetArea:
0
1299 case Qt::BottomDockWidgetArea: return QInternal::BottomDock;
never executed: return QInternal::BottomDock;
never executed: case Qt::BottomDockWidgetArea:
0
1300 default:
never executed: default:
0
1301 break;
never executed: break;
0
1302 }-
1303-
1304 return QInternal::DockCount;
never executed: return QInternal::DockCount;
0
1305}-
1306-
1307static Qt::DockWidgetArea toDockWidgetArea(QInternal::DockPosition pos)-
1308{-
1309 switch (pos) {-
1310 case QInternal::LeftDock : return Qt::LeftDockWidgetArea;
never executed: return Qt::LeftDockWidgetArea;
never executed: case QInternal::LeftDock :
0
1311 case QInternal::RightDock : return Qt::RightDockWidgetArea;
never executed: return Qt::RightDockWidgetArea;
never executed: case QInternal::RightDock :
0
1312 case QInternal::TopDock : return Qt::TopDockWidgetArea;
never executed: return Qt::TopDockWidgetArea;
never executed: case QInternal::TopDock :
0
1313 case QInternal::BottomDock : return Qt::BottomDockWidgetArea;
never executed: return Qt::BottomDockWidgetArea;
never executed: case QInternal::BottomDock :
0
1314 default:
never executed: default:
0
1315 break;
never executed: break;
0
1316 }-
1317-
1318 return Qt::NoDockWidgetArea;
never executed: return Qt::NoDockWidgetArea;
0
1319}-
1320-
1321inline static Qt::DockWidgetArea toDockWidgetArea(int pos)-
1322{-
1323 return toDockWidgetArea(static_cast<QInternal::DockPosition>(pos));
never executed: return toDockWidgetArea(static_cast<QInternal::DockPosition>(pos));
0
1324}-
1325-
1326void QMainWindowLayout::setCorner(Qt::Corner corner, Qt::DockWidgetArea area)-
1327{-
1328 if (layoutState.dockAreaLayout.corners[corner] == area)
layoutState.do...orner] == areaDescription
TRUEnever evaluated
FALSEnever evaluated
0
1329 return;
never executed: return;
0
1330 layoutState.dockAreaLayout.corners[corner] = area;-
1331 if (savedState.isValid())
savedState.isValid()Description
TRUEnever evaluated
FALSEnever evaluated
0
1332 savedState.dockAreaLayout.corners[corner] = area;
never executed: savedState.dockAreaLayout.corners[corner] = area;
0
1333 invalidate();-
1334}
never executed: end of block
0
1335-
1336Qt::DockWidgetArea QMainWindowLayout::corner(Qt::Corner corner) const-
1337{-
1338 return layoutState.dockAreaLayout.corners[corner];
never executed: return layoutState.dockAreaLayout.corners[corner];
0
1339}-
1340-
1341void QMainWindowLayout::addDockWidget(Qt::DockWidgetArea area,-
1342 QDockWidget *dockwidget,-
1343 Qt::Orientation orientation)-
1344{-
1345 addChildWidget(dockwidget);-
1346-
1347 // If we are currently moving a separator, then we need to abort the move, since each-
1348 // time we move the mouse layoutState is replaced by savedState modified by the move.-
1349 if (!movingSeparator.isEmpty())
!movingSeparator.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
0
1350 endSeparatorMove(movingSeparatorPos);
never executed: endSeparatorMove(movingSeparatorPos);
0
1351-
1352 layoutState.dockAreaLayout.addDockWidget(toDockPos(area), dockwidget, orientation);-
1353 emit dockwidget->dockLocationChanged(area);-
1354 invalidate();-
1355}
never executed: end of block
0
1356-
1357void QMainWindowLayout::tabifyDockWidget(QDockWidget *first, QDockWidget *second)-
1358{-
1359 addChildWidget(second);-
1360 layoutState.dockAreaLayout.tabifyDockWidget(first, second);-
1361 emit second->dockLocationChanged(dockWidgetArea(first));-
1362 invalidate();-
1363}
never executed: end of block
0
1364-
1365bool QMainWindowLayout::restoreDockWidget(QDockWidget *dockwidget)-
1366{-
1367 addChildWidget(dockwidget);-
1368 if (!layoutState.dockAreaLayout.restoreDockWidget(dockwidget))
!layoutState.d...et(dockwidget)Description
TRUEnever evaluated
FALSEnever evaluated
0
1369 return false;
never executed: return false;
0
1370 emit dockwidget->dockLocationChanged(dockWidgetArea(dockwidget));-
1371 invalidate();-
1372 return true;
never executed: return true;
0
1373}-
1374-
1375#ifndef QT_NO_TABBAR-
1376bool QMainWindowLayout::documentMode() const-
1377{-
1378 return _documentMode;
never executed: return _documentMode;
0
1379}-
1380-
1381void QMainWindowLayout::setDocumentMode(bool enabled)-
1382{-
1383 if (_documentMode == enabled)
_documentMode == enabledDescription
TRUEnever evaluated
FALSEnever evaluated
0
1384 return;
never executed: return;
0
1385-
1386 _documentMode = enabled;-
1387-
1388 // Update the document mode for all tab bars-
1389 foreach (QTabBar *bar, usedTabBars)-
1390 bar->setDocumentMode(_documentMode);
never executed: bar->setDocumentMode(_documentMode);
0
1391 foreach (QTabBar *bar, unusedTabBars)-
1392 bar->setDocumentMode(_documentMode);
never executed: bar->setDocumentMode(_documentMode);
0
1393}
never executed: end of block
0
1394#endif // QT_NO_TABBAR-
1395-
1396void QMainWindowLayout::setVerticalTabsEnabled(bool enabled)-
1397{-
1398#ifdef QT_NO_TABBAR-
1399 Q_UNUSED(enabled);-
1400#else-
1401 if (verticalTabsEnabled == enabled)
verticalTabsEnabled == enabledDescription
TRUEnever evaluated
FALSEnever evaluated
0
1402 return;
never executed: return;
0
1403-
1404 verticalTabsEnabled = enabled;-
1405-
1406 updateTabBarShapes();-
1407#endif // QT_NO_TABBAR-
1408}
never executed: end of block
0
1409-
1410#ifndef QT_NO_TABWIDGET-
1411QTabWidget::TabShape QMainWindowLayout::tabShape() const-
1412{-
1413 return _tabShape;
never executed: return _tabShape;
0
1414}-
1415-
1416void QMainWindowLayout::setTabShape(QTabWidget::TabShape tabShape)-
1417{-
1418 if (_tabShape == tabShape)
_tabShape == tabShapeDescription
TRUEnever evaluated
FALSEnever evaluated
0
1419 return;
never executed: return;
0
1420-
1421 _tabShape = tabShape;-
1422-
1423 updateTabBarShapes();-
1424}
never executed: end of block
0
1425-
1426QTabWidget::TabPosition QMainWindowLayout::tabPosition(Qt::DockWidgetArea area) const-
1427{-
1428 return tabPositions[toDockPos(area)];
never executed: return tabPositions[toDockPos(area)];
0
1429}-
1430-
1431void QMainWindowLayout::setTabPosition(Qt::DockWidgetAreas areas, QTabWidget::TabPosition tabPosition)-
1432{-
1433 const Qt::DockWidgetArea dockWidgetAreas[] = {-
1434 Qt::TopDockWidgetArea,-
1435 Qt::LeftDockWidgetArea,-
1436 Qt::BottomDockWidgetArea,-
1437 Qt::RightDockWidgetArea-
1438 };-
1439 const QInternal::DockPosition dockPositions[] = {-
1440 QInternal::TopDock,-
1441 QInternal::LeftDock,-
1442 QInternal::BottomDock,-
1443 QInternal::RightDock-
1444 };-
1445-
1446 for (int i = 0; i < QInternal::DockCount; ++i)
i < QInternal::DockCountDescription
TRUEnever evaluated
FALSEnever evaluated
0
1447 if (areas & dockWidgetAreas[i])
areas & dockWidgetAreas[i]Description
TRUEnever evaluated
FALSEnever evaluated
0
1448 tabPositions[dockPositions[i]] = tabPosition;
never executed: tabPositions[dockPositions[i]] = tabPosition;
0
1449-
1450 updateTabBarShapes();-
1451}
never executed: end of block
0
1452-
1453static inline QTabBar::Shape tabBarShapeFrom(QTabWidget::TabShape shape, QTabWidget::TabPosition position)-
1454{-
1455 const bool rounded = (shape == QTabWidget::Rounded);-
1456 if (position == QTabWidget::North)
position == QTabWidget::NorthDescription
TRUEnever evaluated
FALSEnever evaluated
0
1457 return rounded ? QTabBar::RoundedNorth : QTabBar::TriangularNorth;
never executed: return rounded ? QTabBar::RoundedNorth : QTabBar::TriangularNorth;
roundedDescription
TRUEnever evaluated
FALSEnever evaluated
0
1458 if (position == QTabWidget::South)
position == QTabWidget::SouthDescription
TRUEnever evaluated
FALSEnever evaluated
0
1459 return rounded ? QTabBar::RoundedSouth : QTabBar::TriangularSouth;
never executed: return rounded ? QTabBar::RoundedSouth : QTabBar::TriangularSouth;
roundedDescription
TRUEnever evaluated
FALSEnever evaluated
0
1460 if (position == QTabWidget::East)
position == QTabWidget::EastDescription
TRUEnever evaluated
FALSEnever evaluated
0
1461 return rounded ? QTabBar::RoundedEast : QTabBar::TriangularEast;
never executed: return rounded ? QTabBar::RoundedEast : QTabBar::TriangularEast;
roundedDescription
TRUEnever evaluated
FALSEnever evaluated
0
1462 if (position == QTabWidget::West)
position == QTabWidget::WestDescription
TRUEnever evaluated
FALSEnever evaluated
0
1463 return rounded ? QTabBar::RoundedWest : QTabBar::TriangularWest;
never executed: return rounded ? QTabBar::RoundedWest : QTabBar::TriangularWest;
roundedDescription
TRUEnever evaluated
FALSEnever evaluated
0
1464 return QTabBar::RoundedNorth;
never executed: return QTabBar::RoundedNorth;
0
1465}-
1466#endif // QT_NO_TABWIDGET-
1467-
1468#ifndef QT_NO_TABBAR-
1469void QMainWindowLayout::updateTabBarShapes()-
1470{-
1471#ifndef QT_NO_TABWIDGET-
1472 const QTabWidget::TabPosition vertical[] = {-
1473 QTabWidget::West,-
1474 QTabWidget::East,-
1475 QTabWidget::North,-
1476 QTabWidget::South-
1477 };-
1478#else-
1479 const QTabBar::Shape vertical[] = {-
1480 QTabBar::RoundedWest,-
1481 QTabBar::RoundedEast,-
1482 QTabBar::RoundedNorth,-
1483 QTabBar::RoundedSouth-
1484 };-
1485#endif-
1486-
1487 QDockAreaLayout &layout = layoutState.dockAreaLayout;-
1488-
1489 for (int i = 0; i < QInternal::DockCount; ++i) {
i < QInternal::DockCountDescription
TRUEnever evaluated
FALSEnever evaluated
0
1490#ifndef QT_NO_TABWIDGET-
1491 QTabWidget::TabPosition pos = verticalTabsEnabled ? vertical[i] : tabPositions[i];
verticalTabsEnabledDescription
TRUEnever evaluated
FALSEnever evaluated
0
1492 QTabBar::Shape shape = tabBarShapeFrom(_tabShape, pos);-
1493#else-
1494 QTabBar::Shape shape = verticalTabsEnabled ? vertical[i] : QTabBar::RoundedSouth;-
1495#endif-
1496 layout.docks[i].setTabBarShape(shape);-
1497 }
never executed: end of block
0
1498}
never executed: end of block
0
1499#endif // QT_NO_TABBAR-
1500-
1501void QMainWindowLayout::splitDockWidget(QDockWidget *after,-
1502 QDockWidget *dockwidget,-
1503 Qt::Orientation orientation)-
1504{-
1505 addChildWidget(dockwidget);-
1506 layoutState.dockAreaLayout.splitDockWidget(after, dockwidget, orientation);-
1507 emit dockwidget->dockLocationChanged(dockWidgetArea(after));-
1508 invalidate();-
1509}
never executed: end of block
0
1510-
1511Qt::DockWidgetArea QMainWindowLayout::dockWidgetArea(QWidget *widget) const-
1512{-
1513 QList<int> pathToWidget = layoutState.dockAreaLayout.indexOf(widget);-
1514 if (pathToWidget.isEmpty())
pathToWidget.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
0
1515 return Qt::NoDockWidgetArea;
never executed: return Qt::NoDockWidgetArea;
0
1516 return toDockWidgetArea(pathToWidget.first());
never executed: return toDockWidgetArea(pathToWidget.first());
0
1517}-
1518-
1519void QMainWindowLayout::keepSize(QDockWidget *w)-
1520{-
1521 layoutState.dockAreaLayout.keepSize(w);-
1522}
never executed: end of block
0
1523-
1524#ifndef QT_NO_TABBAR-
1525-
1526// Handle custom tooltip, and allow to drag tabs away.-
1527class QMainWindowTabBar : public QTabBar-
1528{-
1529 QMainWindow *mainWindow;-
1530 QDockWidget *draggingDock; // Currently dragging (detached) dock widget-
1531public:-
1532 QMainWindowTabBar(QMainWindow *parent);-
1533protected:-
1534 bool event(QEvent *e) Q_DECL_OVERRIDE;-
1535 void mouseReleaseEvent(QMouseEvent*) Q_DECL_OVERRIDE;-
1536 void mouseMoveEvent(QMouseEvent*) Q_DECL_OVERRIDE;-
1537-
1538};-
1539-
1540QMainWindowTabBar::QMainWindowTabBar(QMainWindow *parent)-
1541 : QTabBar(parent), mainWindow(parent), draggingDock(0)-
1542{-
1543 setExpanding(false);-
1544}
never executed: end of block
0
1545-
1546void QMainWindowTabBar::mouseMoveEvent(QMouseEvent *e)-
1547{-
1548 // The QTabBar handles the moving (reordering) of tabs.-
1549 // When QTabBarPrivate::dragInProgress is true, and that the mouse is outside of a region-
1550 // around the QTabBar, we will consider the user wants to drag that QDockWidget away from this-
1551 // tab area.-
1552-
1553 QTabBarPrivate *d = static_cast<QTabBarPrivate*>(d_ptr.data());-
1554 if (!draggingDock && (mainWindow->dockOptions() & QMainWindow::GroupedDragging)) {
!draggingDockDescription
TRUEnever evaluated
FALSEnever evaluated
(mainWindow->d...oupedDragging)Description
TRUEnever evaluated
FALSEnever evaluated
0
1555 int offset = QApplication::startDragDistance() + 1;-
1556 offset *= 3;-
1557 QRect r = rect().adjusted(-offset, -offset, offset, offset);-
1558 if (d->dragInProgress && !r.contains(e->pos()) && d->validIndex(d->pressedIndex)) {
d->dragInProgressDescription
TRUEnever evaluated
FALSEnever evaluated
!r.contains(e->pos())Description
TRUEnever evaluated
FALSEnever evaluated
d->validIndex(d->pressedIndex)Description
TRUEnever evaluated
FALSEnever evaluated
0
1559 QMainWindowLayout* mlayout = qt_mainwindow_layout(mainWindow);-
1560 QDockAreaLayoutInfo *info = mlayout->dockInfo(this);-
1561 Q_ASSERT(info);-
1562 int idx = info->tabIndexToListIndex(d->pressedIndex);-
1563 const QDockAreaLayoutItem &item = info->item_list.at(idx);-
1564 if (item.widgetItem
item.widgetItemDescription
TRUEnever evaluated
FALSEnever evaluated
0
1565 && (draggingDock = qobject_cast<QDockWidget *>(item.widgetItem->widget()))) {
(draggingDock ...em->widget()))Description
TRUEnever evaluated
FALSEnever evaluated
0
1566 // We should drag this QDockWidget away by unpluging it.-
1567 // First cancel the QTabBar's internal move-
1568 d->moveTabFinished(d->pressedIndex);-
1569 d->pressedIndex = -1;-
1570 if (d->movingTab)
d->movingTabDescription
TRUEnever evaluated
FALSEnever evaluated
0
1571 d->movingTab->setVisible(false);
never executed: d->movingTab->setVisible(false);
0
1572 d->dragStartPosition = QPoint();-
1573-
1574 // Then starts the drag using QDockWidgetPrivate's API-
1575 QDockWidgetPrivate *dockPriv = static_cast<QDockWidgetPrivate *>(QObjectPrivate::get(draggingDock));-
1576 QDockWidgetLayout *dwlayout = static_cast<QDockWidgetLayout *>(draggingDock->layout());-
1577 dockPriv->initDrag(dwlayout->titleArea().center(), true);-
1578 dockPriv->startDrag(false);-
1579 if (dockPriv->state)
dockPriv->stateDescription
TRUEnever evaluated
FALSEnever evaluated
0
1580 dockPriv->state->ctrlDrag = e->modifiers() & Qt::ControlModifier;
never executed: dockPriv->state->ctrlDrag = e->modifiers() & Qt::ControlModifier;
0
1581 }
never executed: end of block
0
1582 }
never executed: end of block
0
1583 }
never executed: end of block
0
1584-
1585 if (draggingDock) {
draggingDockDescription
TRUEnever evaluated
FALSEnever evaluated
0
1586 QDockWidgetPrivate *dockPriv = static_cast<QDockWidgetPrivate *>(QObjectPrivate::get(draggingDock));-
1587 if (dockPriv->state && dockPriv->state->dragging) {
dockPriv->stateDescription
TRUEnever evaluated
FALSEnever evaluated
dockPriv->state->draggingDescription
TRUEnever evaluated
FALSEnever evaluated
0
1588 QPoint pos = e->globalPos() - dockPriv->state->pressPos;-
1589 draggingDock->move(pos);-
1590 // move will call QMainWindowLayout::hover-
1591 }
never executed: end of block
0
1592 }
never executed: end of block
0
1593 QTabBar::mouseMoveEvent(e);-
1594}
never executed: end of block
0
1595-
1596void QMainWindowTabBar::mouseReleaseEvent(QMouseEvent *e)-
1597{-
1598 if (draggingDock && e->button() == Qt::LeftButton) {
draggingDockDescription
TRUEnever evaluated
FALSEnever evaluated
e->button() == Qt::LeftButtonDescription
TRUEnever evaluated
FALSEnever evaluated
0
1599 QDockWidgetPrivate *dockPriv = static_cast<QDockWidgetPrivate *>(QObjectPrivate::get(draggingDock));-
1600 if (dockPriv->state && dockPriv->state->dragging) {
dockPriv->stateDescription
TRUEnever evaluated
FALSEnever evaluated
dockPriv->state->draggingDescription
TRUEnever evaluated
FALSEnever evaluated
0
1601 dockPriv->endDrag();-
1602 }
never executed: end of block
0
1603 draggingDock = 0;-
1604 }
never executed: end of block
0
1605 QTabBar::mouseReleaseEvent(e);-
1606}
never executed: end of block
0
1607-
1608bool QMainWindowTabBar::event(QEvent *e)-
1609{-
1610 // show the tooltip if tab is too small to fit label-
1611-
1612 if (e->type() != QEvent::ToolTip)
e->type() != QEvent::ToolTipDescription
TRUEnever evaluated
FALSEnever evaluated
0
1613 return QTabBar::event(e);
never executed: return QTabBar::event(e);
0
1614 QSize size = this->size();-
1615 QSize hint = sizeHint();-
1616 if (shape() == QTabBar::RoundedWest || shape() == QTabBar::RoundedEast) {
shape() == QTa...r::RoundedWestDescription
TRUEnever evaluated
FALSEnever evaluated
shape() == QTa...r::RoundedEastDescription
TRUEnever evaluated
FALSEnever evaluated
0
1617 size = size.transposed();-
1618 hint = hint.transposed();-
1619 }
never executed: end of block
0
1620 if (size.width() < hint.width())
size.width() < hint.width()Description
TRUEnever evaluated
FALSEnever evaluated
0
1621 return QTabBar::event(e);
never executed: return QTabBar::event(e);
0
1622 e->accept();-
1623 return true;
never executed: return true;
0
1624}-
1625-
1626QTabBar *QMainWindowLayout::getTabBar()-
1627{-
1628 QTabBar *result = 0;-
1629 if (!unusedTabBars.isEmpty()) {
!unusedTabBars.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
0
1630 result = unusedTabBars.takeLast();-
1631 } else {
never executed: end of block
0
1632 result = new QMainWindowTabBar(static_cast<QMainWindow *>(parentWidget()));-
1633 result->setDrawBase(true);-
1634 result->setElideMode(Qt::ElideRight);-
1635 result->setDocumentMode(_documentMode);-
1636 result->setMovable(true);-
1637 connect(result, SIGNAL(currentChanged(int)), this, SLOT(tabChanged()));-
1638 connect(result, &QTabBar::tabMoved, this, &QMainWindowLayout::tabMoved);-
1639 }
never executed: end of block
0
1640-
1641 usedTabBars.insert(result);-
1642 return result;
never executed: return result;
0
1643}-
1644-
1645// Allocates a new separator widget if needed-
1646QWidget *QMainWindowLayout::getSeparatorWidget()-
1647{-
1648 QWidget *result = 0;-
1649 if (!unusedSeparatorWidgets.isEmpty()) {
!unusedSeparat...gets.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
0
1650 result = unusedSeparatorWidgets.takeLast();-
1651 } else {
never executed: end of block
0
1652 result = new QWidget(parentWidget());-
1653 result->setAttribute(Qt::WA_MouseNoMask, true);-
1654 result->setAutoFillBackground(false);-
1655 result->setObjectName(QLatin1String("qt_qmainwindow_extended_splitter"));-
1656 }
never executed: end of block
0
1657 usedSeparatorWidgets.insert(result);-
1658 return result;
never executed: return result;
0
1659}-
1660-
1661/*! \internal-
1662 Returns a pointer QDockAreaLayoutInfo which contains this \a widget directly-
1663 (in its internal list)-
1664 */-
1665QDockAreaLayoutInfo *QMainWindowLayout::dockInfo(QWidget *widget)-
1666{-
1667 QDockAreaLayoutInfo *info = layoutState.dockAreaLayout.info(widget);-
1668 if (info)
infoDescription
TRUEnever evaluated
FALSEnever evaluated
0
1669 return info;
never executed: return info;
0
1670 foreach (QDockWidgetGroupWindow *dwgw,-
1671 parent()->findChildren<QDockWidgetGroupWindow*>(QString(), Qt::FindDirectChildrenOnly)) {-
1672 info = dwgw->layoutInfo()->info(widget);-
1673 if (info)
infoDescription
TRUEnever evaluated
FALSEnever evaluated
0
1674 return info;
never executed: return info;
0
1675 }
never executed: end of block
0
1676 return 0;
never executed: return 0;
0
1677}-
1678-
1679void QMainWindowLayout::tabChanged()-
1680{-
1681 QTabBar *tb = qobject_cast<QTabBar*>(sender());-
1682 if (tb == 0)
tb == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1683 return;
never executed: return;
0
1684 QDockAreaLayoutInfo *info = dockInfo(tb);-
1685 if (info == 0)
info == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1686 return;
never executed: return;
0
1687 info->apply(false);-
1688-
1689 if (QWidget *w = centralWidget())
QWidget *w = centralWidget()Description
TRUEnever evaluated
FALSEnever evaluated
0
1690 w->raise();
never executed: w->raise();
0
1691}
never executed: end of block
0
1692-
1693void QMainWindowLayout::tabMoved(int from, int to)-
1694{-
1695 QTabBar *tb = qobject_cast<QTabBar*>(sender());-
1696 Q_ASSERT(tb);-
1697 QDockAreaLayoutInfo *info = dockInfo(tb);-
1698 Q_ASSERT(info);-
1699-
1700 info->moveTab(from, to);-
1701}
never executed: end of block
0
1702#endif // QT_NO_TABBAR-
1703-
1704bool QMainWindowLayout::startSeparatorMove(const QPoint &pos)-
1705{-
1706 movingSeparator = layoutState.dockAreaLayout.findSeparator(pos);-
1707-
1708 if (movingSeparator.isEmpty())
movingSeparator.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
0
1709 return false;
never executed: return false;
0
1710-
1711 layoutState.dockAreaLayout.fallbackToSizeHints = false;-
1712-
1713 savedState = layoutState;-
1714 movingSeparatorPos = movingSeparatorOrigin = pos;-
1715-
1716 return true;
never executed: return true;
0
1717}-
1718-
1719bool QMainWindowLayout::separatorMove(const QPoint &pos)-
1720{-
1721 if (movingSeparator.isEmpty())
movingSeparator.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
0
1722 return false;
never executed: return false;
0
1723 movingSeparatorPos = pos;-
1724 separatorMoveTimer.start(0, this);-
1725 return true;
never executed: return true;
0
1726}-
1727-
1728bool QMainWindowLayout::endSeparatorMove(const QPoint&)-
1729{-
1730 if (movingSeparator.isEmpty())
movingSeparator.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
0
1731 return false;
never executed: return false;
0
1732 movingSeparator.clear();-
1733 savedState.clear();-
1734 return true;
never executed: return true;
0
1735}-
1736-
1737void QMainWindowLayout::raise(QDockWidget *widget)-
1738{-
1739 QDockAreaLayoutInfo *info = dockInfo(widget);-
1740 if (info == 0)
info == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1741 return;
never executed: return;
0
1742#ifndef QT_NO_TABBAR-
1743 if (!info->tabbed)
!info->tabbedDescription
TRUEnever evaluated
FALSEnever evaluated
0
1744 return;
never executed: return;
0
1745 info->setCurrentTab(widget);-
1746#endif-
1747}
never executed: end of block
0
1748-
1749#endif // QT_NO_DOCKWIDGET-
1750-
1751-
1752/******************************************************************************-
1753** QMainWindowLayoutState - layout interface-
1754*/-
1755-
1756int QMainWindowLayout::count() const-
1757{-
1758 qWarning("QMainWindowLayout::count: ?");-
1759 return 0; //#################################################
never executed: return 0;
0
1760}-
1761-
1762QLayoutItem *QMainWindowLayout::itemAt(int index) const-
1763{-
1764 int x = 0;-
1765-
1766 if (QLayoutItem *ret = layoutState.itemAt(index, &x))
QLayoutItem *r...mAt(index, &x)Description
TRUEnever evaluated
FALSEnever evaluated
0
1767 return ret;
never executed: return ret;
0
1768-
1769 if (statusbar && x++ == index)
statusbarDescription
TRUEnever evaluated
FALSEnever evaluated
x++ == indexDescription
TRUEnever evaluated
FALSEnever evaluated
0
1770 return statusbar;
never executed: return statusbar;
0
1771-
1772 return 0;
never executed: return 0;
0
1773}-
1774-
1775QLayoutItem *QMainWindowLayout::takeAt(int index)-
1776{-
1777 int x = 0;-
1778-
1779 if (QLayoutItem *ret = layoutState.takeAt(index, &x)) {
QLayoutItem *r...eAt(index, &x)Description
TRUEnever evaluated
FALSEnever evaluated
0
1780 // the widget might in fact have been destroyed by now-
1781 if (QWidget *w = ret->widget()) {
QWidget *w = ret->widget()Description
TRUEnever evaluated
FALSEnever evaluated
0
1782 widgetAnimator.abort(w);-
1783 if (w == pluggingWidget)
w == pluggingWidgetDescription
TRUEnever evaluated
FALSEnever evaluated
0
1784 pluggingWidget = 0;
never executed: pluggingWidget = 0;
0
1785 }
never executed: end of block
0
1786-
1787 if (savedState.isValid() ) {
savedState.isValid()Description
TRUEnever evaluated
FALSEnever evaluated
0
1788 //we need to remove the item also from the saved state to prevent crash-
1789 savedState.remove(ret);-
1790 //Also, the item may be contained several times as a gap item.-
1791 layoutState.remove(ret);-
1792 }
never executed: end of block
0
1793-
1794#ifndef QT_NO_TOOLBAR-
1795 if (!currentGapPos.isEmpty() && currentGapPos.first() == 0) {
!currentGapPos.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
currentGapPos.first() == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1796 currentGapPos = layoutState.toolBarAreaLayout.currentGapIndex();-
1797 if (!currentGapPos.isEmpty()) {
!currentGapPos.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
0
1798 currentGapPos.prepend(0);-
1799 currentGapRect = layoutState.itemRect(currentGapPos);-
1800 }
never executed: end of block
0
1801 }
never executed: end of block
0
1802#endif-
1803-
1804 return ret;
never executed: return ret;
0
1805 }-
1806-
1807 if (statusbar && x++ == index) {
statusbarDescription
TRUEnever evaluated
FALSEnever evaluated
x++ == indexDescription
TRUEnever evaluated
FALSEnever evaluated
0
1808 QLayoutItem *ret = statusbar;-
1809 statusbar = 0;-
1810 return ret;
never executed: return ret;
0
1811 }-
1812-
1813 return 0;
never executed: return 0;
0
1814}-
1815-
1816void QMainWindowLayout::setGeometry(const QRect &_r)-
1817{-
1818 if (savedState.isValid())
savedState.isValid()Description
TRUEnever evaluated
FALSEnever evaluated
0
1819 return;
never executed: return;
0
1820-
1821 QRect r = _r;-
1822-
1823 QLayout::setGeometry(r);-
1824-
1825 if (statusbar) {
statusbarDescription
TRUEnever evaluated
FALSEnever evaluated
0
1826 QRect sbr(QPoint(r.left(), 0),-
1827 QSize(r.width(), statusbar->heightForWidth(r.width()))-
1828 .expandedTo(statusbar->minimumSize()));-
1829 sbr.moveBottom(r.bottom());-
1830 QRect vr = QStyle::visualRect(parentWidget()->layoutDirection(), _r, sbr);-
1831 statusbar->setGeometry(vr);-
1832 r.setBottom(sbr.top() - 1);-
1833 }
never executed: end of block
0
1834-
1835 layoutState.rect = r;-
1836 layoutState.fitLayout();-
1837 applyState(layoutState, false);-
1838}
never executed: end of block
0
1839-
1840void QMainWindowLayout::addItem(QLayoutItem *)-
1841{
never executed: end of block
qWarning("QMainWindowLayout::addItem: Please use the public QMainWindow API instead"); }
never executed: end of block
0
1842-
1843QSize QMainWindowLayout::sizeHint() const-
1844{-
1845 if (!szHint.isValid()) {
!szHint.isValid()Description
TRUEnever evaluated
FALSEnever evaluated
0
1846 szHint = layoutState.sizeHint();-
1847 const QSize sbHint = statusbar ? statusbar->sizeHint() : QSize(0, 0);
statusbarDescription
TRUEnever evaluated
FALSEnever evaluated
0
1848 szHint = QSize(qMax(sbHint.width(), szHint.width()),-
1849 sbHint.height() + szHint.height());-
1850 }
never executed: end of block
0
1851 return szHint;
never executed: return szHint;
0
1852}-
1853-
1854QSize QMainWindowLayout::minimumSize() const-
1855{-
1856 if (!minSize.isValid()) {
!minSize.isValid()Description
TRUEnever evaluated
FALSEnever evaluated
0
1857 minSize = layoutState.minimumSize();-
1858 const QSize sbMin = statusbar ? statusbar->minimumSize() : QSize(0, 0);
statusbarDescription
TRUEnever evaluated
FALSEnever evaluated
0
1859 minSize = QSize(qMax(sbMin.width(), minSize.width()),-
1860 sbMin.height() + minSize.height());-
1861#ifdef Q_DEAD_CODE_FROM_QT4_MAC-
1862 const QSize storedSize = minSize;-
1863 int minWidth = 0;-
1864 foreach (QToolBar *toolbar, qtoolbarsInUnifiedToolbarList) {-
1865 minWidth += toolbar->sizeHint().width() + 20;-
1866 }-
1867 minSize = QSize(qMax(minWidth, storedSize.width()), storedSize.height());-
1868#endif-
1869 }
never executed: end of block
0
1870 return minSize;
never executed: return minSize;
0
1871}-
1872-
1873void QMainWindowLayout::invalidate()-
1874{-
1875 QLayout::invalidate();-
1876 minSize = szHint = QSize();-
1877}
never executed: end of block
0
1878-
1879#ifndef QT_NO_DOCKWIDGET-
1880void QMainWindowLayout::setCurrentHoveredFloat(QWidget *w)-
1881{-
1882 if (currentHoveredFloat != w) {
currentHoveredFloat != wDescription
TRUEnever evaluated
FALSEnever evaluated
0
1883 if (currentHoveredFloat) {
currentHoveredFloatDescription
TRUEnever evaluated
FALSEnever evaluated
0
1884 disconnect(currentHoveredFloat.data(), &QObject::destroyed,-
1885 this, &QMainWindowLayout::updateGapIndicator);-
1886 }
never executed: end of block
0
1887-
1888 currentHoveredFloat = w;-
1889-
1890 if (w) {
wDescription
TRUEnever evaluated
FALSEnever evaluated
0
1891 connect(w, &QObject::destroyed,-
1892 this, &QMainWindowLayout::updateGapIndicator, Qt::UniqueConnection);-
1893 }
never executed: end of block
0
1894-
1895 updateGapIndicator();-
1896 }
never executed: end of block
0
1897}
never executed: end of block
0
1898#endif //QT_NO_DOCKWIDGET-
1899-
1900/******************************************************************************-
1901** QMainWindowLayout - remaining stuff-
1902*/-
1903-
1904static void fixToolBarOrientation(QLayoutItem *item, int dockPos)-
1905{-
1906#ifndef QT_NO_TOOLBAR-
1907 QToolBar *toolBar = qobject_cast<QToolBar*>(item->widget());-
1908 if (toolBar == 0)
toolBar == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
1909 return;
never executed: return;
0
1910-
1911 QRect oldGeo = toolBar->geometry();-
1912-
1913 QInternal::DockPosition pos-
1914 = static_cast<QInternal::DockPosition>(dockPos);-
1915 Qt::Orientation o = pos == QInternal::TopDock || pos == QInternal::BottomDock
pos == QInternal::TopDockDescription
TRUEnever evaluated
FALSEnever evaluated
pos == QInternal::BottomDockDescription
TRUEnever evaluated
FALSEnever evaluated
0
1916 ? Qt::Horizontal : Qt::Vertical;-
1917 if (o != toolBar->orientation())
o != toolBar->orientation()Description
TRUEnever evaluated
FALSEnever evaluated
0
1918 toolBar->setOrientation(o);
never executed: toolBar->setOrientation(o);
0
1919-
1920 QSize hint = toolBar->sizeHint().boundedTo(toolBar->maximumSize())-
1921 .expandedTo(toolBar->minimumSize());-
1922-
1923 if (toolBar->size() != hint) {
toolBar->size() != hintDescription
TRUEnever evaluated
FALSEnever evaluated
0
1924 QRect newGeo(oldGeo.topLeft(), hint);-
1925 if (toolBar->layoutDirection() == Qt::RightToLeft)
toolBar->layou...t::RightToLeftDescription
TRUEnever evaluated
FALSEnever evaluated
0
1926 newGeo.moveRight(oldGeo.right());
never executed: newGeo.moveRight(oldGeo.right());
0
1927 toolBar->setGeometry(newGeo);-
1928 }
never executed: end of block
0
1929-
1930#else-
1931 Q_UNUSED(item);-
1932 Q_UNUSED(dockPos);-
1933#endif-
1934}
never executed: end of block
0
1935-
1936void QMainWindowLayout::revert(QLayoutItem *widgetItem)-
1937{-
1938 if (!savedState.isValid())
!savedState.isValid()Description
TRUEnever evaluated
FALSEnever evaluated
0
1939 return;
never executed: return;
0
1940-
1941 QWidget *widget = widgetItem->widget();-
1942 layoutState = savedState;-
1943 currentGapPos = layoutState.indexOf(widget);-
1944 if (currentGapPos.isEmpty())
currentGapPos.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
0
1945 return;
never executed: return;
0
1946 fixToolBarOrientation(widgetItem, currentGapPos.at(1));-
1947 layoutState.unplug(currentGapPos);-
1948 layoutState.fitLayout();-
1949 currentGapRect = layoutState.itemRect(currentGapPos);-
1950-
1951 plug(widgetItem);-
1952}
never executed: end of block
0
1953-
1954bool QMainWindowLayout::plug(QLayoutItem *widgetItem)-
1955{-
1956#ifndef QT_NO_DOCKWIDGET-
1957 if (currentHoveredFloat) {
currentHoveredFloatDescription
TRUEnever evaluated
FALSEnever evaluated
0
1958 QWidget *widget = widgetItem->widget();-
1959 QList<int> previousPath = layoutState.indexOf(widget);-
1960 if (!previousPath.isEmpty())
!previousPath.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
0
1961 layoutState.remove(previousPath);
never executed: layoutState.remove(previousPath);
0
1962 // Let's remove the widget from any possible group window-
1963 foreach (QDockWidgetGroupWindow *dwgw,-
1964 parent()->findChildren<QDockWidgetGroupWindow*>(QString(), Qt::FindDirectChildrenOnly)) {-
1965 QList<int> path = dwgw->layoutInfo()->indexOf(widget);-
1966 if (!path.isEmpty())
!path.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
0
1967 dwgw->layoutInfo()->remove(path);
never executed: dwgw->layoutInfo()->remove(path);
0
1968 }
never executed: end of block
0
1969 currentGapRect = QRect();-
1970-
1971 if (QDockWidget *dropTo = qobject_cast<QDockWidget*>(currentHoveredFloat)) {
QDockWidget *d...tHoveredFloat)Description
TRUEnever evaluated
FALSEnever evaluated
0
1972 //dropping to a normal widget, we mutate it in a QDockWidgetGroupWindow with two tabs-
1973 QDockWidgetGroupWindow *floatingTabs = createTabbedDockWindow();-
1974 floatingTabs->setGeometry(dropTo->geometry());-
1975 QDockAreaLayoutInfo *info = floatingTabs->layoutInfo();-
1976 *info = QDockAreaLayoutInfo(&layoutState.dockAreaLayout.sep, QInternal::LeftDock,-
1977 Qt::Horizontal, QTabBar::RoundedSouth,-
1978 static_cast<QMainWindow*>(parentWidget()));-
1979 info->tabbed = true;-
1980 QLayout *parentLayout = currentHoveredFloat->parentWidget()->layout();-
1981 info->item_list.append(parentLayout->takeAt(parentLayout->indexOf(currentHoveredFloat)));-
1982-
1983 dropTo->setParent(floatingTabs);-
1984 dropTo->show();-
1985 dropTo->d_func()->plug(QRect());-
1986 setCurrentHoveredFloat(floatingTabs);-
1987 }
never executed: end of block
0
1988-
1989 QDockWidgetGroupWindow *dwgw = qobject_cast<QDockWidgetGroupWindow *>(currentHoveredFloat);-
1990 Q_ASSERT(dwgw);-
1991 Q_ASSERT(dwgw->layoutInfo()->tabbed); // because floating group should always be tabbed-
1992 previousPath = dwgw->layoutInfo()->indexOf(widget);-
1993 if (!previousPath.isEmpty())
!previousPath.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
0
1994 dwgw->layoutInfo()->remove(previousPath);
never executed: dwgw->layoutInfo()->remove(previousPath);
0
1995 dwgw->layoutInfo()->tab(0, widgetItem);-
1996 QRect globalRect = dwgw->layoutInfo()->tabContentRect();-
1997 globalRect.moveTopLeft(dwgw->mapToGlobal(globalRect.topLeft()));-
1998 pluggingWidget = widget;-
1999 widgetAnimator.animate(widget, globalRect, dockOptions & QMainWindow::AnimatedDocks);-
2000 return true;
never executed: return true;
0
2001 }-
2002#endif-
2003-
2004 if (!parentWidget()->isVisible() || parentWidget()->isMinimized() || currentGapPos.isEmpty())
!parentWidget()->isVisible()Description
TRUEnever evaluated
FALSEnever evaluated
parentWidget()->isMinimized()Description
TRUEnever evaluated
FALSEnever evaluated
currentGapPos.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
0
2005 return false;
never executed: return false;
0
2006-
2007 fixToolBarOrientation(widgetItem, currentGapPos.at(1));-
2008-
2009 QWidget *widget = widgetItem->widget();-
2010-
2011#ifndef QT_NO_DOCKWIDGET-
2012 // Let's remove the widget from any possible group window-
2013 foreach (QDockWidgetGroupWindow *dwgw,-
2014 parent()->findChildren<QDockWidgetGroupWindow*>(QString(), Qt::FindDirectChildrenOnly)) {-
2015 QList<int> path = dwgw->layoutInfo()->indexOf(widget);-
2016 if (!path.isEmpty())
!path.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
0
2017 dwgw->layoutInfo()->remove(path);
never executed: dwgw->layoutInfo()->remove(path);
0
2018 }
never executed: end of block
0
2019#endif-
2020-
2021 QList<int> previousPath = layoutState.indexOf(widget);-
2022-
2023 const QLayoutItem *it = layoutState.plug(currentGapPos);-
2024 if (!it)
!itDescription
TRUEnever evaluated
FALSEnever evaluated
0
2025 return false;
never executed: return false;
0
2026 Q_ASSERT(it == widgetItem);-
2027 if (!previousPath.isEmpty())
!previousPath.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
0
2028 layoutState.remove(previousPath);
never executed: layoutState.remove(previousPath);
0
2029-
2030 pluggingWidget = widget;-
2031 QRect globalRect = currentGapRect;-
2032 globalRect.moveTopLeft(parentWidget()->mapToGlobal(globalRect.topLeft()));-
2033#ifndef QT_NO_DOCKWIDGET-
2034 if (qobject_cast<QDockWidget*>(widget) != 0) {
qobject_cast<Q...>(widget) != 0Description
TRUEnever evaluated
FALSEnever evaluated
0
2035 QDockWidgetLayout *layout = qobject_cast<QDockWidgetLayout*>(widget->layout());-
2036 if (layout->nativeWindowDeco()) {
layout->nativeWindowDeco()Description
TRUEnever evaluated
FALSEnever evaluated
0
2037 globalRect.adjust(0, layout->titleHeight(), 0, 0);-
2038 } else {
never executed: end of block
0
2039 int fw = widget->style()->pixelMetric(QStyle::PM_DockWidgetFrameWidth, 0, widget);-
2040 globalRect.adjust(-fw, -fw, fw, fw);-
2041 }
never executed: end of block
0
2042 }-
2043#endif-
2044 widgetAnimator.animate(widget, globalRect, dockOptions & QMainWindow::AnimatedDocks);-
2045-
2046 return true;
never executed: return true;
0
2047}-
2048-
2049void QMainWindowLayout::animationFinished(QWidget *widget)-
2050{-
2051 //this function is called from within the Widget Animator whenever an animation is finished-
2052 //on a certain widget-
2053#ifndef QT_NO_TOOLBAR-
2054 if (QToolBar *tb = qobject_cast<QToolBar*>(widget)) {
QToolBar *tb =...lBar*>(widget)Description
TRUEnever evaluated
FALSEnever evaluated
0
2055 QToolBarLayout *tbl = qobject_cast<QToolBarLayout*>(tb->layout());-
2056 if (tbl->animating) {
tbl->animatingDescription
TRUEnever evaluated
FALSEnever evaluated
0
2057 tbl->animating = false;-
2058 if (tbl->expanded)
tbl->expandedDescription
TRUEnever evaluated
FALSEnever evaluated
0
2059 tbl->layoutActions(tb->size());
never executed: tbl->layoutActions(tb->size());
0
2060 tb->update();-
2061 }
never executed: end of block
0
2062 }
never executed: end of block
0
2063#endif-
2064-
2065 if (widget == pluggingWidget) {
widget == pluggingWidgetDescription
TRUEnever evaluated
FALSEnever evaluated
0
2066-
2067#ifndef QT_NO_DOCKWIDGET-
2068 if (QDockWidgetGroupWindow *dwgw = qobject_cast<QDockWidgetGroupWindow *>(widget)) {
QDockWidgetGro...dow *>(widget)Description
TRUEnever evaluated
FALSEnever evaluated
0
2069 // When the animated widget was a QDockWidgetGroupWindow, it means each of the-
2070 // embedded QDockWidget needs to be plugged back into the QMainWindow layout.-
2071 savedState.clear();-
2072 QDockAreaLayoutInfo* info = dwgw->layoutInfo();-
2073 QDockAreaLayoutInfo* parentInfo;-
2074 QList<int> path;-
2075-
2076 if (QDockWidgetGroupWindow *dropTo = qobject_cast<QDockWidgetGroupWindow *>(currentHoveredFloat)) {
QDockWidgetGro...tHoveredFloat)Description
TRUEnever evaluated
FALSEnever evaluated
0
2077 parentInfo = dropTo->layoutInfo();-
2078 Q_ASSERT(parentInfo->tabbed);-
2079 path = parentInfo->indexOf(widget);-
2080 Q_ASSERT(path.size() == 1);-
2081 } else {
never executed: end of block
0
2082 path = layoutState.dockAreaLayout.indexOf(widget);-
2083 Q_ASSERT(path.size() >= 2);-
2084 parentInfo = layoutState.dockAreaLayout.info(path);-
2085 Q_ASSERT(parentInfo);-
2086 }
never executed: end of block
0
2087-
2088 if (parentInfo->tabbed) {
parentInfo->tabbedDescription
TRUEnever evaluated
FALSEnever evaluated
0
2089 // merge the two tab widgets-
2090 int idx = path.last();-
2091 Q_ASSERT(parentInfo->item_list[idx].widgetItem->widget() == dwgw);-
2092 delete parentInfo->item_list[idx].widgetItem;-
2093 parentInfo->item_list.removeAt(idx);-
2094 std::copy(info->item_list.cbegin(), info->item_list.cend(),-
2095 std::inserter(parentInfo->item_list, parentInfo->item_list.begin() + idx));-
2096 quintptr currentId = info->currentTabId();-
2097 *info = QDockAreaLayoutInfo();-
2098 parentInfo->reparentWidgets(currentHoveredFloat ? currentHoveredFloat.data() : parentWidget());-
2099 parentInfo->updateTabBar();-
2100 parentInfo->setCurrentTabId(currentId);-
2101 } else {
never executed: end of block
0
2102 QDockAreaLayoutItem &item = layoutState.dockAreaLayout.item(path);-
2103 Q_ASSERT(item.widgetItem->widget() == dwgw);-
2104 delete item.widgetItem;-
2105 item.widgetItem = 0;-
2106 item.subinfo = new QDockAreaLayoutInfo(qMove(*info));-
2107 *info = QDockAreaLayoutInfo();-
2108 item.subinfo->reparentWidgets(parentWidget());-
2109 item.subinfo->setTabBarShape(parentInfo->tabBarShape);-
2110 }
never executed: end of block
0
2111 dwgw->destroyOrHideIfEmpty();-
2112 }
never executed: end of block
0
2113-
2114 if (QDockWidget *dw = qobject_cast<QDockWidget*>(widget)) {
QDockWidget *d...dget*>(widget)Description
TRUEnever evaluated
FALSEnever evaluated
0
2115 dw->setParent(currentHoveredFloat ? currentHoveredFloat.data() : parentWidget());-
2116 dw->show();-
2117 dw->d_func()->plug(currentGapRect);-
2118 }
never executed: end of block
0
2119#endif-
2120#ifndef QT_NO_TOOLBAR-
2121 if (QToolBar *tb = qobject_cast<QToolBar*>(widget))
QToolBar *tb =...lBar*>(widget)Description
TRUEnever evaluated
FALSEnever evaluated
0
2122 tb->d_func()->plug(currentGapRect);
never executed: tb->d_func()->plug(currentGapRect);
0
2123#endif-
2124-
2125 savedState.clear();-
2126 currentGapPos.clear();-
2127 pluggingWidget = 0;-
2128 setCurrentHoveredFloat(Q_NULLPTR);-
2129 //applying the state will make sure that the currentGap is updated correctly-
2130 //and all the geometries (especially the one from the central widget) is correct-
2131 layoutState.apply(false);-
2132-
2133#ifndef QT_NO_DOCKWIDGET-
2134#ifndef QT_NO_TABBAR-
2135 if (qobject_cast<QDockWidget*>(widget) != 0) {
qobject_cast<Q...>(widget) != 0Description
TRUEnever evaluated
FALSEnever evaluated
0
2136 // info() might return null if the widget is destroyed while-
2137 // animating but before the animationFinished signal is received.-
2138 if (QDockAreaLayoutInfo *info = dockInfo(widget))
QDockAreaLayou...ckInfo(widget)Description
TRUEnever evaluated
FALSEnever evaluated
0
2139 info->setCurrentTab(widget);
never executed: info->setCurrentTab(widget);
0
2140 }
never executed: end of block
0
2141#endif-
2142#endif-
2143 }
never executed: end of block
0
2144-
2145 if (!widgetAnimator.animating()) {
!widgetAnimator.animating()Description
TRUEnever evaluated
FALSEnever evaluated
0
2146 //all animations are finished-
2147#ifndef QT_NO_DOCKWIDGET-
2148 parentWidget()->update(layoutState.dockAreaLayout.separatorRegion());-
2149#ifndef QT_NO_TABBAR-
2150 foreach (QTabBar *tab_bar, usedTabBars)-
2151 tab_bar->show();
never executed: tab_bar->show();
0
2152#endif // QT_NO_TABBAR-
2153#endif // QT_NO_DOCKWIDGET-
2154 }
never executed: end of block
0
2155-
2156 updateGapIndicator();-
2157}
never executed: end of block
0
2158-
2159void QMainWindowLayout::restore(bool keepSavedState)-
2160{-
2161 if (!savedState.isValid())
!savedState.isValid()Description
TRUEnever evaluated
FALSEnever evaluated
0
2162 return;
never executed: return;
0
2163-
2164 layoutState = savedState;-
2165 applyState(layoutState);-
2166 if (!keepSavedState)
!keepSavedStateDescription
TRUEnever evaluated
FALSEnever evaluated
0
2167 savedState.clear();
never executed: savedState.clear();
0
2168 currentGapPos.clear();-
2169 pluggingWidget = 0;-
2170 updateGapIndicator();-
2171}
never executed: end of block
0
2172-
2173QMainWindowLayout::QMainWindowLayout(QMainWindow *mainwindow, QLayout *parentLayout)-
2174 : QLayout(parentLayout ? static_cast<QWidget *>(0) : mainwindow)-
2175 , layoutState(mainwindow)-
2176 , savedState(mainwindow)-
2177 , dockOptions(QMainWindow::AnimatedDocks | QMainWindow::AllowTabbedDocks)-
2178 , statusbar(0)-
2179#ifndef QT_NO_DOCKWIDGET-
2180#ifndef QT_NO_TABBAR-
2181 , _documentMode(false)-
2182 , verticalTabsEnabled(false)-
2183#ifndef QT_NO_TABWIDGET-
2184 , _tabShape(QTabWidget::Rounded)-
2185#endif-
2186#endif-
2187#endif // QT_NO_DOCKWIDGET-
2188 , widgetAnimator(this)-
2189 , pluggingWidget(0)-
2190#ifdef Q_DEAD_CODE_FROM_QT4_MAC-
2191 , blockVisiblityCheck(false)-
2192#endif-
2193{-
2194 if (parentLayout)
parentLayoutDescription
TRUEnever evaluated
FALSEnever evaluated
0
2195 setParent(parentLayout);
never executed: setParent(parentLayout);
0
2196-
2197#ifndef QT_NO_DOCKWIDGET-
2198#ifndef QT_NO_TABBAR-
2199 sep = mainwindow->style()->pixelMetric(QStyle::PM_DockWidgetSeparatorExtent, 0, mainwindow);-
2200#endif-
2201-
2202#ifndef QT_NO_TABWIDGET-
2203 for (int i = 0; i < QInternal::DockCount; ++i)
i < QInternal::DockCountDescription
TRUEnever evaluated
FALSEnever evaluated
0
2204 tabPositions[i] = QTabWidget::South;
never executed: tabPositions[i] = QTabWidget::South;
0
2205#endif-
2206#endif // QT_NO_DOCKWIDGET-
2207 pluggingWidget = 0;-
2208-
2209 setObjectName(mainwindow->objectName() + QLatin1String("_layout"));-
2210}
never executed: end of block
0
2211-
2212QMainWindowLayout::~QMainWindowLayout()-
2213{-
2214 layoutState.deleteAllLayoutItems();-
2215 layoutState.deleteCentralWidgetItem();-
2216-
2217#ifdef Q_DEAD_CODE_FROM_QT4_MAC-
2218 cleanUpMacToolbarItems();-
2219#endif-
2220-
2221 delete statusbar;-
2222}
never executed: end of block
0
2223-
2224void QMainWindowLayout::setDockOptions(QMainWindow::DockOptions opts)-
2225{-
2226 if (opts == dockOptions)
opts == dockOptionsDescription
TRUEnever evaluated
FALSEnever evaluated
0
2227 return;
never executed: return;
0
2228-
2229 dockOptions = opts;-
2230-
2231#ifndef QT_NO_DOCKWIDGET-
2232 setVerticalTabsEnabled(opts & QMainWindow::VerticalTabs);-
2233#endif-
2234-
2235 invalidate();-
2236}
never executed: end of block
0
2237-
2238#ifndef QT_NO_STATUSBAR-
2239QStatusBar *QMainWindowLayout::statusBar() const-
2240{
never executed: return statusbar ? qobject_cast<QStatusBar *>(statusbar->widget()) : 0;
statusbarDescription
TRUEnever evaluated
FALSEnever evaluated
return statusbar ? qobject_cast<QStatusBar *>(statusbar->widget()) : 0; }
never executed: return statusbar ? qobject_cast<QStatusBar *>(statusbar->widget()) : 0;
statusbarDescription
TRUEnever evaluated
FALSEnever evaluated
0
2241-
2242void QMainWindowLayout::setStatusBar(QStatusBar *sb)-
2243{-
2244 if (sb)
sbDescription
TRUEnever evaluated
FALSEnever evaluated
0
2245 addChildWidget(sb);
never executed: addChildWidget(sb);
0
2246 delete statusbar;-
2247 statusbar = sb ? new QWidgetItemV2(sb) : 0;
sbDescription
TRUEnever evaluated
FALSEnever evaluated
0
2248 invalidate();-
2249}
never executed: end of block
0
2250#endif // QT_NO_STATUSBAR-
2251-
2252QWidget *QMainWindowLayout::centralWidget() const-
2253{-
2254 return layoutState.centralWidget();
never executed: return layoutState.centralWidget();
0
2255}-
2256-
2257void QMainWindowLayout::setCentralWidget(QWidget *widget)-
2258{-
2259 if (widget != 0)
widget != 0Description
TRUEnever evaluated
FALSEnever evaluated
0
2260 addChildWidget(widget);
never executed: addChildWidget(widget);
0
2261 layoutState.setCentralWidget(widget);-
2262 if (savedState.isValid()) {
savedState.isValid()Description
TRUEnever evaluated
FALSEnever evaluated
0
2263#ifndef QT_NO_DOCKWIDGET-
2264 savedState.dockAreaLayout.centralWidgetItem = layoutState.dockAreaLayout.centralWidgetItem;-
2265 savedState.dockAreaLayout.fallbackToSizeHints = true;-
2266#else-
2267 savedState.centralWidgetItem = layoutState.centralWidgetItem;-
2268#endif-
2269 }
never executed: end of block
0
2270 invalidate();-
2271}
never executed: end of block
0
2272-
2273/*! \internal-
2274 Unplug \a widget (QDockWidget or QToolBar) from it's parent container.-
2275-
2276 If \a group is true we might actually unplug the group of tabs this-
2277 widget is part if QMainWindow::GroupedDragging is set. When \a group-
2278 is false, the widget itself is always unplugged alone-
2279-
2280 Returns the QLayoutItem of the dragged element.-
2281 The layout item is kept in the layout but set as a gap item.-
2282 */-
2283QLayoutItem *QMainWindowLayout::unplug(QWidget *widget, bool group)-
2284{-
2285#if !defined(QT_NO_DOCKWIDGET) && !defined(QT_NO_TABBAR)-
2286 if (!widget->isWindow() && qobject_cast<const QDockWidgetGroupWindow *>(widget->parentWidget())) {
!widget->isWindow()Description
TRUEnever evaluated
FALSEnever evaluated
qobject_cast<c...arentWidget())Description
TRUEnever evaluated
FALSEnever evaluated
0
2287 if (group) {
groupDescription
TRUEnever evaluated
FALSEnever evaluated
0
2288 // We are just dragging a floating window as it, not need to do anything, we just have to-
2289 // look up the corresponding QWidgetItem* if it exists-
2290 QList<int> tabbedWindowPath = layoutState.indexOf(widget->parentWidget());-
2291 return tabbedWindowPath.isEmpty() ? 0 : layoutState.item(tabbedWindowPath);
never executed: return tabbedWindowPath.isEmpty() ? 0 : layoutState.item(tabbedWindowPath);
tabbedWindowPath.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
0
2292 } else {-
2293 // We are unplugging a dock widget from a floating window.-
2294 if (QDockWidget *dw = qobject_cast<QDockWidget*>(widget)) {
QDockWidget *d...dget*>(widget)Description
TRUEnever evaluated
FALSEnever evaluated
0
2295 dw->d_func()->unplug(widget->geometry());-
2296 int index = widget->parentWidget()->layout()->indexOf(widget);-
2297 return widget->parentWidget()->layout()->itemAt(index);
never executed: return widget->parentWidget()->layout()->itemAt(index);
0
2298 }-
2299 }
never executed: end of block
0
2300 }-
2301#endif-
2302 QList<int> path = layoutState.indexOf(widget);-
2303 if (path.isEmpty())
path.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
0
2304 return 0;
never executed: return 0;
0
2305-
2306 QLayoutItem *item = layoutState.item(path);-
2307 if (widget->isWindow())
widget->isWindow()Description
TRUEnever evaluated
FALSEnever evaluated
0
2308 return item;
never executed: return item;
0
2309-
2310 QRect r = layoutState.itemRect(path);-
2311 savedState = layoutState;-
2312-
2313#ifndef QT_NO_DOCKWIDGET-
2314 if (QDockWidget *dw = qobject_cast<QDockWidget*>(widget)) {
QDockWidget *d...dget*>(widget)Description
TRUEnever evaluated
FALSEnever evaluated
0
2315 Q_ASSERT(path.first() == 1);-
2316 bool actualGroup = false;-
2317#ifndef QT_NO_TABBAR-
2318 if (group && (dockOptions & QMainWindow::GroupedDragging) && path.size() > 3) {
groupDescription
TRUEnever evaluated
FALSEnever evaluated
(dockOptions &...oupedDragging)Description
TRUEnever evaluated
FALSEnever evaluated
path.size() > 3Description
TRUEnever evaluated
FALSEnever evaluated
0
2319 QDockAreaLayoutItem &parentItem = layoutState.dockAreaLayout.item(path.mid(1, path.size() - 2));-
2320 if (parentItem.subinfo && parentItem.subinfo->tabbed) {
parentItem.subinfoDescription
TRUEnever evaluated
FALSEnever evaluated
parentItem.subinfo->tabbedDescription
TRUEnever evaluated
FALSEnever evaluated
0
2321 // The QDockWidget is part of a group of tab and we need to unplug them all.-
2322 actualGroup = true;-
2323 path.removeLast();-
2324-
2325 QDockWidgetGroupWindow* floatingTabs = createTabbedDockWindow();-
2326 QDockAreaLayoutInfo* info = floatingTabs->layoutInfo();-
2327 *info = qMove(*parentItem.subinfo);-
2328 delete parentItem.subinfo;-
2329 parentItem.subinfo = 0;-
2330 floatingTabs->setGeometry(info->rect.translated(parentWidget()->pos()));-
2331 floatingTabs->show();-
2332 floatingTabs->raise();-
2333 item = new QDockWidgetGroupWindowItem(floatingTabs);-
2334 parentItem.widgetItem = item;-
2335 savedState = layoutState;-
2336 }
never executed: end of block
0
2337 }
never executed: end of block
0
2338#endif // QT_NO_TABBAR-
2339 if (!actualGroup) {
!actualGroupDescription
TRUEnever evaluated
FALSEnever evaluated
0
2340 dw->d_func()->unplug(r);-
2341 }
never executed: end of block
0
2342 }
never executed: end of block
0
2343#endif // QT_NO_DOCKWIDGET-
2344#ifndef QT_NO_TOOLBAR-
2345 if (QToolBar *tb = qobject_cast<QToolBar*>(widget)) {
QToolBar *tb =...lBar*>(widget)Description
TRUEnever evaluated
FALSEnever evaluated
0
2346 tb->d_func()->unplug(r);-
2347 }
never executed: end of block
0
2348#endif-
2349-
2350-
2351 layoutState.unplug(path ,&savedState);-
2352 savedState.fitLayout();-
2353 currentGapPos = path;-
2354 currentGapRect = r;-
2355 updateGapIndicator();-
2356-
2357 fixToolBarOrientation(item, currentGapPos.at(1));-
2358-
2359 return item;
never executed: return item;
0
2360}-
2361-
2362void QMainWindowLayout::updateGapIndicator()-
2363{-
2364#ifndef QT_NO_RUBBERBAND-
2365 if ((!widgetAnimator.animating() && !currentGapPos.isEmpty()) || currentHoveredFloat) {
!widgetAnimator.animating()Description
TRUEnever evaluated
FALSEnever evaluated
!currentGapPos.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
currentHoveredFloatDescription
TRUEnever evaluated
FALSEnever evaluated
0
2366 QWidget *expectedParent = currentHoveredFloat ? currentHoveredFloat.data() : parentWidget();
currentHoveredFloatDescription
TRUEnever evaluated
FALSEnever evaluated
0
2367 if (!gapIndicator) {
!gapIndicatorDescription
TRUEnever evaluated
FALSEnever evaluated
0
2368 gapIndicator = new QRubberBand(QRubberBand::Rectangle, expectedParent);-
2369 // For accessibility to identify this special widget.-
2370 gapIndicator->setObjectName(QLatin1String("qt_rubberband"));-
2371 } else if (gapIndicator->parent() != expectedParent) {
never executed: end of block
gapIndicator->...expectedParentDescription
TRUEnever evaluated
FALSEnever evaluated
0
2372 gapIndicator->setParent(expectedParent);-
2373 }
never executed: end of block
0
2374 gapIndicator->setGeometry(currentHoveredFloat ? currentHoveredFloat->rect() : currentGapRect);-
2375 gapIndicator->show();-
2376 gapIndicator->raise();-
2377 } else if (gapIndicator) {
never executed: end of block
gapIndicatorDescription
TRUEnever evaluated
FALSEnever evaluated
0
2378 gapIndicator->hide();-
2379 }
never executed: end of block
0
2380#endif //QT_NO_RUBBERBAND-
2381}
never executed: end of block
0
2382-
2383void QMainWindowLayout::hover(QLayoutItem *widgetItem, const QPoint &mousePos)-
2384{-
2385 if (!parentWidget()->isVisible() || parentWidget()->isMinimized()
!parentWidget()->isVisible()Description
TRUEnever evaluated
FALSEnever evaluated
parentWidget()->isMinimized()Description
TRUEnever evaluated
FALSEnever evaluated
0
2386 || pluggingWidget != 0 || widgetItem == 0)
pluggingWidget != 0Description
TRUEnever evaluated
FALSEnever evaluated
widgetItem == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
2387 return;
never executed: return;
0
2388-
2389 QWidget *widget = widgetItem->widget();-
2390-
2391#ifndef QT_NO_DOCKWIDGET-
2392 if ((dockOptions & QMainWindow::GroupedDragging) && (qobject_cast<QDockWidget*>(widget)
(dockOptions &...oupedDragging)Description
TRUEnever evaluated
FALSEnever evaluated
qobject_cast<Q...dget*>(widget)Description
TRUEnever evaluated
FALSEnever evaluated
0
2393 || qobject_cast<QDockWidgetGroupWindow *>(widget))) {
qobject_cast<Q...dow *>(widget)Description
TRUEnever evaluated
FALSEnever evaluated
0
2394-
2395 // Check if we are over another floating dock widget-
2396 QVarLengthArray<QWidget *, 10> candidates;-
2397 foreach (QObject *c, parentWidget()->children()) {-
2398 QWidget *w = qobject_cast<QWidget*>(c);-
2399 if (!w)
!wDescription
TRUEnever evaluated
FALSEnever evaluated
0
2400 continue;
never executed: continue;
0
2401 if (!qobject_cast<QDockWidget*>(w) && !qobject_cast<QDockWidgetGroupWindow *>(w))
!qobject_cast<QDockWidget*>(w)Description
TRUEnever evaluated
FALSEnever evaluated
!qobject_cast<...upWindow *>(w)Description
TRUEnever evaluated
FALSEnever evaluated
0
2402 continue;
never executed: continue;
0
2403 if (w != widget && w->isTopLevel() && w->isVisible() && !w->isMinimized())
w != widgetDescription
TRUEnever evaluated
FALSEnever evaluated
w->isTopLevel()Description
TRUEnever evaluated
FALSEnever evaluated
w->isVisible()Description
TRUEnever evaluated
FALSEnever evaluated
!w->isMinimized()Description
TRUEnever evaluated
FALSEnever evaluated
0
2404 candidates << w;
never executed: candidates << w;
0
2405 if (QDockWidgetGroupWindow *group = qobject_cast<QDockWidgetGroupWindow *>(w)) {
QDockWidgetGro...upWindow *>(w)Description
TRUEnever evaluated
FALSEnever evaluated
0
2406 // Sometimes, there are floating QDockWidget that have a QDockWidgetGroupWindow as a parent.-
2407 foreach (QObject *c, group->children()) {-
2408 if (QDockWidget *dw = qobject_cast<QDockWidget*>(c)) {
QDockWidget *d...ockWidget*>(c)Description
TRUEnever evaluated
FALSEnever evaluated
0
2409 if (dw != widget && dw->isFloating() && dw->isVisible() && !dw->isMinimized())
dw != widgetDescription
TRUEnever evaluated
FALSEnever evaluated
dw->isFloating()Description
TRUEnever evaluated
FALSEnever evaluated
dw->isVisible()Description
TRUEnever evaluated
FALSEnever evaluated
!dw->isMinimized()Description
TRUEnever evaluated
FALSEnever evaluated
0
2410 candidates << dw;
never executed: candidates << dw;
0
2411 }
never executed: end of block
0
2412 }
never executed: end of block
0
2413 }
never executed: end of block
0
2414 }
never executed: end of block
0
2415 foreach (QWidget *w, candidates) {-
2416 QWindow *handle1 = widget->windowHandle();-
2417 QWindow *handle2 = w->windowHandle();-
2418 if (handle1 && handle2 && handle1->screen() != handle2->screen())
handle1Description
TRUEnever evaluated
FALSEnever evaluated
handle2Description
TRUEnever evaluated
FALSEnever evaluated
handle1->scree...dle2->screen()Description
TRUEnever evaluated
FALSEnever evaluated
0
2419 continue;
never executed: continue;
0
2420 if (!w->geometry().contains(mousePos))
!w->geometry()...ains(mousePos)Description
TRUEnever evaluated
FALSEnever evaluated
0
2421 continue;
never executed: continue;
0
2422-
2423 setCurrentHoveredFloat(w);-
2424 restore(true);-
2425 return;
never executed: return;
0
2426 }-
2427 }
never executed: end of block
0
2428 setCurrentHoveredFloat(Q_NULLPTR);-
2429#endif //QT_NO_DOCKWIDGET-
2430-
2431 QPoint pos = parentWidget()->mapFromGlobal(mousePos);-
2432-
2433 if (!savedState.isValid())
!savedState.isValid()Description
TRUEnever evaluated
FALSEnever evaluated
0
2434 savedState = layoutState;
never executed: savedState = layoutState;
0
2435-
2436 QList<int> path = savedState.gapIndex(widget, pos);-
2437-
2438 if (!path.isEmpty()) {
!path.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
0
2439 bool allowed = false;-
2440-
2441#ifndef QT_NO_DOCKWIDGET-
2442 if (QDockWidget *dw = qobject_cast<QDockWidget*>(widget))
QDockWidget *d...dget*>(widget)Description
TRUEnever evaluated
FALSEnever evaluated
0
2443 allowed = dw->isAreaAllowed(toDockWidgetArea(path.at(1)));
never executed: allowed = dw->isAreaAllowed(toDockWidgetArea(path.at(1)));
0
2444-
2445 if (qobject_cast<QDockWidgetGroupWindow *>(widget))
qobject_cast<Q...dow *>(widget)Description
TRUEnever evaluated
FALSEnever evaluated
0
2446 allowed = true;
never executed: allowed = true;
0
2447#endif-
2448#ifndef QT_NO_TOOLBAR-
2449 if (QToolBar *tb = qobject_cast<QToolBar*>(widget))
QToolBar *tb =...lBar*>(widget)Description
TRUEnever evaluated
FALSEnever evaluated
0
2450 allowed = tb->isAreaAllowed(toToolBarArea(path.at(1)));
never executed: allowed = tb->isAreaAllowed(toToolBarArea(path.at(1)));
0
2451#endif-
2452-
2453 if (!allowed)
!allowedDescription
TRUEnever evaluated
FALSEnever evaluated
0
2454 path.clear();
never executed: path.clear();
0
2455 }
never executed: end of block
0
2456-
2457 if (path == currentGapPos)
path == currentGapPosDescription
TRUEnever evaluated
FALSEnever evaluated
0
2458 return; // the gap is already there
never executed: return;
0
2459-
2460 currentGapPos = path;-
2461 if (path.isEmpty()) {
path.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
0
2462 fixToolBarOrientation(widgetItem, 2); // 2 = top dock, ie. horizontal-
2463 restore(true);-
2464 return;
never executed: return;
0
2465 }-
2466-
2467 fixToolBarOrientation(widgetItem, currentGapPos.at(1));-
2468-
2469 QMainWindowLayoutState newState = savedState;-
2470-
2471 if (!newState.insertGap(path, widgetItem)) {
!newState.inse...h, widgetItem)Description
TRUEnever evaluated
FALSEnever evaluated
0
2472 restore(true); // not enough space-
2473 return;
never executed: return;
0
2474 }-
2475-
2476 QSize min = newState.minimumSize();-
2477 QSize size = newState.rect.size();-
2478-
2479 if (min.width() > size.width() || min.height() > size.height()) {
min.width() > size.width()Description
TRUEnever evaluated
FALSEnever evaluated
min.height() > size.height()Description
TRUEnever evaluated
FALSEnever evaluated
0
2480 restore(true);-
2481 return;
never executed: return;
0
2482 }-
2483-
2484 newState.fitLayout();-
2485-
2486 currentGapRect = newState.gapRect(currentGapPos);-
2487-
2488#ifndef QT_NO_DOCKWIDGET-
2489 parentWidget()->update(layoutState.dockAreaLayout.separatorRegion());-
2490#endif-
2491 layoutState = newState;-
2492 applyState(layoutState);-
2493-
2494 updateGapIndicator();-
2495}
never executed: end of block
0
2496-
2497QDockWidgetGroupWindow *QMainWindowLayout::createTabbedDockWindow()-
2498{-
2499 QDockWidgetGroupWindow* f = new QDockWidgetGroupWindow(parentWidget(), Qt::Tool);-
2500 new QDockWidgetGroupLayout(f);-
2501 return f;
never executed: return f;
0
2502}-
2503-
2504void QMainWindowLayout::applyState(QMainWindowLayoutState &newState, bool animate)-
2505{-
2506#ifndef QT_NO_DOCKWIDGET-
2507#ifndef QT_NO_TABBAR-
2508 QSet<QTabBar*> used = newState.dockAreaLayout.usedTabBars();-
2509 foreach (QDockWidgetGroupWindow *dwgw,-
2510 parent()->findChildren<QDockWidgetGroupWindow*>(QString(), Qt::FindDirectChildrenOnly)) {-
2511 used += dwgw->layoutInfo()->usedTabBars();-
2512 }
never executed: end of block
0
2513-
2514 QSet<QTabBar*> retired = usedTabBars - used;-
2515 usedTabBars = used;-
2516 foreach (QTabBar *tab_bar, retired) {-
2517 tab_bar->hide();-
2518 while (tab_bar->count() > 0)
tab_bar->count() > 0Description
TRUEnever evaluated
FALSEnever evaluated
0
2519 tab_bar->removeTab(0);
never executed: tab_bar->removeTab(0);
0
2520 unusedTabBars.append(tab_bar);-
2521 }
never executed: end of block
0
2522-
2523 if (sep == 1) {
sep == 1Description
TRUEnever evaluated
FALSEnever evaluated
0
2524 QSet<QWidget*> usedSeps = newState.dockAreaLayout.usedSeparatorWidgets();-
2525 QSet<QWidget*> retiredSeps = usedSeparatorWidgets - usedSeps;-
2526 usedSeparatorWidgets = usedSeps;-
2527 foreach (QWidget *sepWidget, retiredSeps) {-
2528 unusedSeparatorWidgets.append(sepWidget);-
2529 }
never executed: end of block
0
2530 }
never executed: end of block
0
2531-
2532 for (int i = 0; i < QInternal::DockCount; ++i)
i < QInternal::DockCountDescription
TRUEnever evaluated
FALSEnever evaluated
0
2533 newState.dockAreaLayout.docks[i].reparentWidgets(parentWidget());
never executed: newState.dockAreaLayout.docks[i].reparentWidgets(parentWidget());
0
2534-
2535#endif // QT_NO_TABBAR-
2536#endif // QT_NO_DOCKWIDGET-
2537 newState.apply(dockOptions & QMainWindow::AnimatedDocks && animate);-
2538}
never executed: end of block
0
2539-
2540void QMainWindowLayout::saveState(QDataStream &stream) const-
2541{-
2542 layoutState.saveState(stream);-
2543}
never executed: end of block
0
2544-
2545bool QMainWindowLayout::restoreState(QDataStream &stream)-
2546{-
2547 savedState = layoutState;-
2548 layoutState.clear();-
2549 layoutState.rect = savedState.rect;-
2550-
2551 if (!layoutState.restoreState(stream, savedState)) {
!layoutState.r...m, savedState)Description
TRUEnever evaluated
FALSEnever evaluated
0
2552 layoutState.deleteAllLayoutItems();-
2553 layoutState = savedState;-
2554 if (parentWidget()->isVisible())
parentWidget()->isVisible()Description
TRUEnever evaluated
FALSEnever evaluated
0
2555 applyState(layoutState, false); // hides tabBars allocated by newState
never executed: applyState(layoutState, false);
0
2556 return false;
never executed: return false;
0
2557 }-
2558-
2559 if (parentWidget()->isVisible()) {
parentWidget()->isVisible()Description
TRUEnever evaluated
FALSEnever evaluated
0
2560 layoutState.fitLayout();-
2561 applyState(layoutState, false);-
2562 }
never executed: end of block
0
2563-
2564 savedState.deleteAllLayoutItems();-
2565 savedState.clear();-
2566-
2567#ifndef QT_NO_DOCKWIDGET-
2568 if (parentWidget()->isVisible()) {
parentWidget()->isVisible()Description
TRUEnever evaluated
FALSEnever evaluated
0
2569#ifndef QT_NO_TABBAR-
2570 foreach (QTabBar *tab_bar, usedTabBars)-
2571 tab_bar->show();
never executed: tab_bar->show();
0
2572-
2573#endif-
2574 }
never executed: end of block
0
2575#endif // QT_NO_DOCKWIDGET-
2576-
2577 return true;
never executed: return true;
0
2578}-
2579-
2580-
2581// Returns if this toolbar *should* be using HIToolbar. Won't work for all in between cases-
2582// for example, you have a toolbar in the top area and then you suddenly turn on-
2583// HIToolbar.-
2584bool QMainWindowLayout::usesHIToolBar(QToolBar *toolbar) const-
2585{-
2586#ifndef Q_DEAD_CODE_FROM_QT4_MAC-
2587 Q_UNUSED(toolbar);-
2588 return false;
never executed: return false;
0
2589#else-
2590 return qtoolbarsInUnifiedToolbarList.contains(toolbar)-
2591 || ((toolBarArea(toolbar) == Qt::TopToolBarArea)-
2592 && layoutState.mainWindow->unifiedTitleAndToolBarOnMac());-
2593#endif-
2594}-
2595-
2596void QMainWindowLayout::timerEvent(QTimerEvent *e)-
2597{-
2598#ifndef QT_NO_DOCKWIDGET-
2599 if (e->timerId() == separatorMoveTimer.timerId()) {
e->timerId() =...imer.timerId()Description
TRUEnever evaluated
FALSEnever evaluated
0
2600 //let's move the separators-
2601 separatorMoveTimer.stop();-
2602 if (movingSeparator.isEmpty())
movingSeparator.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
0
2603 return;
never executed: return;
0
2604 if (movingSeparatorOrigin == movingSeparatorPos)
movingSeparato...ngSeparatorPosDescription
TRUEnever evaluated
FALSEnever evaluated
0
2605 return;
never executed: return;
0
2606-
2607 //when moving the separator, we need to update the previous position-
2608 parentWidget()->update(layoutState.dockAreaLayout.separatorRegion());-
2609-
2610 layoutState = savedState;-
2611 layoutState.dockAreaLayout.separatorMove(movingSeparator, movingSeparatorOrigin,-
2612 movingSeparatorPos);-
2613 movingSeparatorPos = movingSeparatorOrigin;-
2614 }
never executed: end of block
0
2615#endif-
2616 QLayout::timerEvent(e);-
2617}
never executed: end of block
0
2618-
2619-
2620QT_END_NAMESPACE-
2621-
2622#include "moc_qmainwindowlayout_p.cpp"-
2623-
2624#endif // QT_NO_MAINWINDOW-
Source codeSwitch to Preprocessed file

Generated by Squish Coco Non-Commercial 4.3.0-BETA-master-30-08-2018-4cb69e9