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;
98 bool inDestructor =
false;
100 bool mousePressEvent(QMouseEvent *event);
101 bool mouseDoubleClickEvent(QMouseEvent *event);
102 bool mouseMoveEvent(QMouseEvent *event);
103 bool mouseReleaseEvent(QMouseEvent *event);
104 void setWindowState(WindowStates states,
const QRect &rect = QRect());
105 void nonClientAreaMouseEvent(QMouseEvent *event);
106 void initDrag(
const QPoint &pos,
bool nca);
107 void startDrag(DragScope scope);
108 void endDrag(EndDragMode mode);
109 void moveEvent(QMoveEvent *event);
110 void recalculatePressPos(QResizeEvent *event);
112 void unplug(
const QRect &rect);
113 void plug(
const QRect &rect);
114 void setResizerActive(
bool active);
115 void setFloating(
bool floating);
117 bool isAnimating()
const;
118 bool isTabbed()
const;
121 QWidgetResizeHandler *resizer =
nullptr;
128 explicit QDockWidgetLayout(QWidget *parent =
nullptr);
129 ~QDockWidgetLayout();
130 void addItem(QLayoutItem *item) override;
131 QLayoutItem *itemAt(
int index)
const override;
132 QLayoutItem *takeAt(
int index) override;
133 int count()
const override;
135 QSize maximumSize()
const override;
136 QSize minimumSize()
const override;
137 QSize sizeHint()
const override;
139 QSize sizeFromContent(
const QSize &content,
bool floating)
const;
141 void setGeometry(
const QRect &r) override;
143 enum Role { Content, CloseButton, FloatButton, TitleBar, RoleCount };
144 QWidget *widgetForRole(Role r)
const;
145 void setWidgetForRole(Role r, QWidget *w);
146 QLayoutItem *itemForRole(Role r)
const;
148 QRect titleArea()
const {
return _titleArea; }
150 int minimumTitleWidth()
const;
151 int titleHeight()
const;
152 void updateMaxSize();
153 static bool wmSupportsNativeWindowDeco();
154 bool nativeWindowDeco()
const;
155 bool nativeWindowDeco(
bool floating)
const;
157 void setVerticalTitleBar(
bool b);
159 bool verticalTitleBar;
162 QList<QLayoutItem *> item_list;
167
178 inline QLayoutItem *dockWidgetChildItem()
const;
179 inline QDockWidgetLayout *dockWidgetLayout()
const;
184 if (QDockWidgetLayout *layout = dockWidgetLayout())
185 return layout->itemForRole(QDockWidgetLayout::Content);
193 return qobject_cast<QDockWidgetLayout*>(w->layout());
QList< int > hoverSeparator
The QMainWindow class provides a main application window.
QSetValueOnDestroy(T &toSet, T value)
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_BEGIN_NAMESPACE Q_DECLARE_LOGGING_CATEGORY(lcEventDispatcher)
QT_REQUIRE_CONFIG(mainwindow)
QT_REQUIRE_CONFIG(thread)