5#ifndef QDYNAMICDOCKWIDGET_P_H
6#define QDYNAMICDOCKWIDGET_P_H
19#include <QtWidgets/private/qtwidgetsglobal_p.h>
20#include "QtWidgets/qstyleoption.h"
21#include "private/qwidget_p.h"
22#include "QtWidgets/qboxlayout.h"
23#include "QtWidgets/qdockwidget.h"
25#if QT_CONFIG(tabwidget)
26# include "QtWidgets/qtabwidget.h"
35class QDockWidgetTitleButton;
39class QDockWidgetPrivate :
public QWidgetPrivate
41 Q_DECLARE_PUBLIC(QDockWidget)
45 QPoint globalPressPos;
46 QPoint widgetInitialPos;
48 QLayoutItem *widgetItem;
55 enum class DragScope {
60 enum class EndDragMode {
65 enum class WindowState {
69 Q_DECLARE_FLAGS(WindowStates, WindowState)
72 void toggleView(
bool);
73 void toggleTopLevel();
76 static Qt::DockWidgetArea toDockWidgetArea(QInternal::DockPosition pos);
78#if QT_CONFIG(tabwidget)
79 QTabWidget::TabPosition tabPosition = QTabWidget::North;
82 DragState *state =
nullptr;
84 QDockWidget::DockWidgetFeatures features = QDockWidget::DockWidgetClosable
85 | QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetFloatable;
86 Qt::DockWidgetAreas allowedAreas = Qt::AllDockWidgetAreas;
91 QAction *toggleViewAction =
nullptr;
95 QRect undockedGeometry;
96 QString fixedWindowTitle;
97 QString dockedWindowTitle;
99 bool mousePressEvent(QMouseEvent *event);
100 bool mouseDoubleClickEvent(QMouseEvent *event);
101 bool mouseMoveEvent(QMouseEvent *event);
102 bool mouseReleaseEvent(QMouseEvent *event);
103 void setWindowState(WindowStates states,
const QRect &rect = QRect());
104 void nonClientAreaMouseEvent(QMouseEvent *event);
105 void initDrag(
const QPoint &pos,
bool nca);
106 void startDrag(DragScope scope);
107 void endDrag(EndDragMode mode);
108 void moveEvent(QMoveEvent *event);
109 void recalculatePressPos(QResizeEvent *event);
111 void unplug(
const QRect &rect);
112 void plug(
const QRect &rect);
113 void setResizerActive(
bool active);
114 void setFloating(
bool floating);
116 bool isAnimating()
const;
117 bool isTabbed()
const;
120 QWidgetResizeHandler *resizer =
nullptr;
127 explicit QDockWidgetLayout(QWidget *parent =
nullptr);
128 ~QDockWidgetLayout();
129 void addItem(QLayoutItem *item) override;
130 QLayoutItem *itemAt(
int index)
const override;
131 QLayoutItem *takeAt(
int index) override;
132 int count()
const override;
134 QSize maximumSize()
const override;
135 QSize minimumSize()
const override;
136 QSize sizeHint()
const override;
138 QSize sizeFromContent(
const QSize &content,
bool floating)
const;
140 void setGeometry(
const QRect &r) override;
142 enum Role { Content, CloseButton, FloatButton, TitleBar, RoleCount };
143 QWidget *widgetForRole(Role r)
const;
144 void setWidgetForRole(Role r, QWidget *w);
145 QLayoutItem *itemForRole(Role r)
const;
147 QRect titleArea()
const {
return _titleArea; }
149 int minimumTitleWidth()
const;
150 int titleHeight()
const;
151 void updateMaxSize();
152 static bool wmSupportsNativeWindowDeco();
153 bool nativeWindowDeco()
const;
154 bool nativeWindowDeco(
bool floating)
const;
156 void setVerticalTitleBar(
bool b);
158 bool verticalTitleBar;
161 QList<QLayoutItem *> item_list;
166
177 inline QLayoutItem *dockWidgetChildItem()
const;
178 inline QDockWidgetLayout *dockWidgetLayout()
const;
183 if (QDockWidgetLayout *layout = dockWidgetLayout())
184 return layout->itemForRole(QDockWidgetLayout::Content);
192 return qobject_cast<QDockWidgetLayout*>(w->layout());
QList< int > hoverSeparator
The QMainWindow class provides a main application window.
QSetValueOnDestroy(T &toSet, T value)
Combined button and popup list for selecting options.
QT_REQUIRE_CONFIG(animation)
static int grow(QLayoutStruct &ls, int delta)
static QRect dockedGeometry(QWidget *widget)
static Qt::DockWidgetArea toDockWidgetArea(QInternal::DockPosition pos)
static int realMinSize(const QDockAreaLayoutInfo &info)
static int qMax(int i1, int i2, int i3)
static int shrink(QLayoutStruct &ls, int delta)
static int separatorMoveHelper(QList< QLayoutStruct > &list, int index, int delta, int sep)
static QInternal::DockPosition dockPosHelper(const QRect &rect, const QPoint &_pos, Qt::Orientation o, bool nestingEnabled, QDockAreaLayoutInfo::TabMode tabMode)
static void paintSep(QPainter *p, QWidget *w, const QRect &r, Qt::Orientation o, bool mouse_over)
static int realMaxSize(const QDockAreaLayoutInfo &info)
QMainWindowLayout * qt_mainwindow_layout(const QMainWindow *window)
QT_REQUIRE_CONFIG(dockwidget)
QT_REQUIRE_CONFIG(liburing)
QT_BEGIN_NAMESPACE Q_DECLARE_LOGGING_CATEGORY(lcQIORing)
QT_REQUIRE_CONFIG(mainwindow)