19#include <QtWidgets/private/qtwidgetsglobal_p.h>
23QT_REQUIRE_CONFIG(mdiarea);
29#include <QtWidgets/qapplication.h>
30#include <private/qmdisubwindow_p.h>
31#include <private/qabstractscrollarea_p.h>
33#include <QtCore/qpointer.h>
48 virtual void rearrange(QList<QWidget *> &widgets,
const QRect &domain)
const = 0;
58 void rearrange(QList<QWidget *> &widgets,
const QRect &domain)
const override;
67 void rearrange(QList<QWidget *> &widgets,
const QRect &domain)
const override;
76 void rearrange(QList<QWidget *> &widgets,
const QRect &domain)
const override;
85 virtual QPoint place(
const QSize &size,
const QList<QRect> &rects,
86 const QRect &domain)
const = 0;
92 QPoint place(
const QSize &size,
const QList<QRect> &rects,
const QRect &domain)
const override;
93 static int accumulatedOverlap(
const QRect &source,
const QList<QRect> &rects);
94 static QRect findMinOverlapRect(
const QList<QRect> &source,
const QList<QRect> &rects);
95 static QList<QRect> getCandidatePlacements(
const QSize &size,
const QList<QRect> &rects,
97 static QPoint findBestPlacement(
const QRect &domain,
const QList<QRect> &rects,
98 QList<QRect> &source);
99 static QList<QRect> findNonInsiders(
const QRect &domain, QList<QRect> &source);
100 static QList<QRect> findMaxOverlappers(
const QRect &domain,
const QList<QRect> &source);
107 Q_DECLARE_PUBLIC(QMdiArea)
116#if QT_CONFIG(rubberband)
135#if QT_CONFIG(tabwidget)
180 int removed = -1,
int fromIndex = -1)
const;
194 using namespace std::chrono_literals;
195 resizeTimer.start(200ms, q);
202 using namespace std::chrono_literals;
203 tabToPreviousTimer.start(QApplication::keyboardInputInterval() * 1ms, q);
210 return subWindow->windowFlags() & Qt::WindowStaysOnTopHint;
217 return subWindow->d_func()->isExplicitlyDeactivated;
220 inline void setActive(QMdiSubWindow *subWindow,
bool active =
true,
bool changeFocus =
true)
const
223 subWindow->d_func()->setActive(active, changeFocus);
226#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...