18#include <QtWidgets/private/qtwidgetsglobal_p.h>
22QT_REQUIRE_CONFIG(mdiarea);
28#include <QtWidgets/qapplication.h>
29#include <private/qmdisubwindow_p.h>
30#include <private/qabstractscrollarea_p.h>
32#include <QtCore/qpointer.h>
47 virtual void rearrange(QList<QWidget *> &widgets,
const QRect &domain)
const = 0;
57 void rearrange(QList<QWidget *> &widgets,
const QRect &domain)
const override;
66 void rearrange(QList<QWidget *> &widgets,
const QRect &domain)
const override;
75 void rearrange(QList<QWidget *> &widgets,
const QRect &domain)
const override;
84 virtual QPoint place(
const QSize &size,
const QList<QRect> &rects,
85 const QRect &domain)
const = 0;
91 QPoint place(
const QSize &size,
const QList<QRect> &rects,
const QRect &domain)
const override;
92 static int accumulatedOverlap(
const QRect &source,
const QList<QRect> &rects);
93 static QRect findMinOverlapRect(
const QList<QRect> &source,
const QList<QRect> &rects);
94 static QList<QRect> getCandidatePlacements(
const QSize &size,
const QList<QRect> &rects,
96 static QPoint findBestPlacement(
const QRect &domain,
const QList<QRect> &rects,
97 QList<QRect> &source);
98 static QList<QRect> findNonInsiders(
const QRect &domain, QList<QRect> &source);
99 static QList<QRect> findMaxOverlappers(
const QRect &domain,
const QList<QRect> &source);
106 Q_DECLARE_PUBLIC(QMdiArea)
115#if QT_CONFIG(rubberband)
134#if QT_CONFIG(tabwidget)
179 int removed = -1,
int fromIndex = -1)
const;
193 using namespace std::chrono_literals;
194 resizeTimer.start(200ms, q);
201 using namespace std::chrono_literals;
202 tabToPreviousTimer.start(QApplication::keyboardInputInterval() * 1ms, q);
209 return subWindow->windowFlags() & Qt::WindowStaysOnTopHint;
216 return subWindow->d_func()->isExplicitlyDeactivated;
219 inline void setActive(QMdiSubWindow *subWindow,
bool active =
true,
bool changeFocus =
true)
const
222 subWindow->d_func()->setActive(active, changeFocus);
225#if QT_CONFIG(rubberband)
void internalRaise(QMdiSubWindow *child) const
void place(QMdi::Placer *placer, QMdiSubWindow *child)
void resetActiveWindow(QMdiSubWindow *child=nullptr)
QMdi::Rearranger * cascader
QPointer< QMdiSubWindow > aboutToBecomeActive
QMdi::Rearranger * regularTiler
void activateCurrentWindow()
QList< int > indicesToActivatedChildren
QBasicTimer tabToPreviousTimer
bool scrollBarsEnabled() const
void appendChild(QMdiSubWindow *child)
void activateHighlightedWindow()
void emitWindowActivated(QMdiSubWindow *child)
QMdi::Rearranger * iconTiler
QPointer< QMdiSubWindow > active
QList< QMdiSubWindow * > subWindowList(QMdiArea::WindowOrder, bool reversed=false) const
QRect resizeToMinimumTileSize(const QSize &minSubWindowSize, int subWindowCount)
QMdiArea::WindowOrder activationOrder
bool isExplicitlyDeactivated(QMdiSubWindow *subWindow) const
void arrangeMinimizedSubWindows()
bool lastWindowAboutToBeDestroyed() const
bool ignoreGeometryChange
void activateWindow(QMdiSubWindow *child)
void highlightNextSubWindow(int increaseFactor)
QList< QMdi::Rearranger * > pendingRearrangements
QMdiArea::AreaOptions options
bool tileCalledFromResizeEvent
void disconnectSubWindow(QObject *subWindow)
void startTabToPreviousTimer()
void _q_moveTab(int from, int to)
bool windowStaysOnTop(QMdiSubWindow *subWindow) const
QList< QPointer< QMdiSubWindow > > pendingPlacements
void setActive(QMdiSubWindow *subWindow, bool active=true, bool changeFocus=true) const
bool ignoreWindowStateChange
void _q_currentTabChanged(int index)
QList< QPointer< QMdiSubWindow > > childWindows
void _q_deactivateAllWindows(QMdiSubWindow *aboutToActivate=nullptr)
void scrollBarPolicyChanged(Qt::Orientation, Qt::ScrollBarPolicy) override
bool showActiveWindowMaximized
QMdiArea::ViewMode viewMode
int indexToPreviousWindow
void setViewMode(QMdiArea::ViewMode mode)
void updateActiveWindow(int removedIndex, bool activeRemoved)
void rearrange(QMdi::Rearranger *rearranger)
void setChildActivationEnabled(bool enable=true, bool onlyNextActivationEvent=false) const
void _q_closeTab(int index)
void _q_processWindowStateChanged(Qt::WindowStates oldState, Qt::WindowStates newState)
QMdiSubWindow * nextVisibleSubWindow(int increaseFactor, QMdiArea::WindowOrder, int removed=-1, int fromIndex=-1) const
Type type() const override
void rearrange(QList< QWidget * > &widgets, const QRect &domain) const override
QPoint place(const QSize &size, const QList< QRect > &rects, const QRect &domain) const override
virtual QPoint place(const QSize &size, const QList< QRect > &rects, const QRect &domain) const =0
virtual void rearrange(QList< QWidget * > &widgets, const QRect &domain) const =0
virtual Type type() const =0
void rearrange(QList< QWidget * > &widgets, const QRect &domain) const override
Type type() const override
void rearrange(QList< QWidget * > &widgets, const QRect &domain) const override
Type type() const override
static bool sanityCheck(const QList< QWidget * > &widgets, const int index, const char *where)
static QString tabTextFor(QMdiSubWindow *subWindow)
static bool sanityCheck(const QMdiSubWindow *const child, const char *where)
static QMdiArea * mdiAreaParent(QWidget *widget)
static bool useScrollBar(const QRect &childrenRect, const QSize &maxViewportSize, Qt::Orientation orientation)
static void setIndex(int *index, int candidate, int min, int max, bool isIncreasing)
QString qt_setWindowTitle_helperHelper(const QString &, const QWidget *)
Returns a modified window title with the [*] place holder replaced according to the rules described i...