KDDockWidgets API Documentation 2.0
Loading...
Searching...
No Matches
core/DropArea.h
Go to the documentation of this file.
1/*
2 This file is part of KDDockWidgets.
3
4 SPDX-FileCopyrightText: 2019 Klarälvdalens Datakonsult AB, a KDAB Group company <info@kdab.com>
5 Author: SĂ©rgio Martins <sergio.martins@kdab.com>
6
7 SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only
8
9 Contact KDAB at <info@kdab.com> for commercial licensing options.
10*/
11
19#ifndef KD_DROP_AREA_P_H
20#define KD_DROP_AREA_P_H
21#pragma once
22
23#include "kddockwidgets/docks_export.h"
24#include "kddockwidgets/KDDockWidgets.h"
25#include "kddockwidgets/core/Layout.h"
26
27class TestQtWidgets;
28class TestDocks;
29
30namespace KDDockWidgets {
31
32namespace Core {
33
34class Group;
35class Draggable;
36class DockWidget;
37class Separator;
38class DropIndicatorOverlay;
39class LayoutingSeparator;
40struct WindowBeingDragged;
41
54class DOCKS_EXPORT DropArea : public Layout
55{
56 Q_OBJECT
57public:
58 explicit DropArea(View *parent, MainWindowOptions options, bool isMDIWrapper = false);
59 ~DropArea();
60
61 void removeHover();
62 DropLocation hover(WindowBeingDragged *draggedWindow, Point globalPos);
64 bool drop(WindowBeingDragged *droppedWindow, Point globalPos);
65 Vector<Core::Group *> groups() const;
66
67 Core::Item *centralFrame() const;
68 DropIndicatorOverlay *dropIndicatorOverlay() const;
69 void addDockWidget(DockWidget *dw, KDDockWidgets::Location location, DockWidget *relativeTo,
70 InitialOption initialOption = {});
71
72 bool containsDockWidget(DockWidget *) const;
73
76 bool hasSingleFloatingFrame() const;
77
80 bool hasSingleFrame() const;
81
82 Vector<QString> affinities() const;
83 void layoutParentContainerEqually(DockWidget *);
84
88 bool isMDIWrapper() const;
89
91 Core::DockWidget *mdiDockWidgetWrapper() const;
92
93 static Core::Group *createCentralFrame(MainWindowOptions options);
94
98 void addWidget(View *widget, KDDockWidgets::Location location,
99 Core::Group *relativeTo = nullptr,
100 InitialOption option = DefaultSizeMode::Fair);
101
108 void addMultiSplitter(Core::DropArea *splitter, KDDockWidgets::Location location,
109 Core::Group *relativeTo = nullptr,
110 InitialOption option = DefaultSizeMode::Fair);
111
118 Rect rectForDrop(const WindowBeingDragged *wbd, KDDockWidgets::Location location,
119 const Core::Item *relativeTo) const;
120
121 bool deserialize(const LayoutSaver::MultiSplitter &) override;
122
124 Vector<Core::LayoutingSeparator *> separators() const;
125
127 void layoutEqually();
128
130 void layoutEqually(Core::ItemBoxContainer *);
131
134 int numSideBySide_recursive(Qt::Orientation) const;
135
136 Core::ItemBoxContainer *rootItem() const;
137
140 DropLocation currentDropLocation() const;
141#if defined(DOCKS_DEVELOPER_MODE) || defined(KDDW_FRONTEND_FLUTTER)
142public:
143#else
144private:
145#endif
147 friend class Core::MainWindow;
148 friend class Core::Group;
149 friend class Core::FloatingWindow;
151 friend class AnimatedIndicators;
152
153 // For debug/hardening
154 bool validateInputs(View *widget, KDDockWidgets::Location location,
155 const Core::Group *relativeToFrame, InitialOption option) const;
156
157
158 void setRootItem(Core::ItemBoxContainer *);
159
165 int availableLengthForOrientation(Qt::Orientation orientation) const;
166
171 Size availableSize() const;
172
173 template<typename T>
174 bool validateAffinity(T *, Core::Group *acceptingGroup = nullptr) const;
175 bool drop(WindowBeingDragged *draggedWindow, Core::Group *acceptingGroup, DropLocation);
176 bool drop(View *droppedwindow, KDDockWidgets::Location location,
177 Core::Group *relativeTo);
178 Core::Group *groupContainingPos(Point globalPos) const;
179 Core::Group *centralGroup() const;
180 void updateFloatingActions();
181
182 class Private;
183 Private *const d;
184};
185}
186}
187
188#endif
#define KDDW_DELETE_COPY_CTOR(NAME)
The DockWidget base-class. DockWidget and Core::DockWidget are only split in two so we can share some...
The widget (QWidget or QQuickItem) which holds a layout of dock widgets.
Definition Layout.h:57
The MainWindow base-class. MainWindow and MainWindowBase are only split in two so we can share some c...
Class to abstract QAction, so code still works with QtQuick and Flutter.
DropLocation
Enum describing the different drop indicator types.
Orientation
Struct describing the preferred dock widget size and visibility when adding it to a layout.

© Klarälvdalens Datakonsult AB (KDAB)
"The Qt, C++ and OpenGL Experts"
https://www.kdab.com/
KDDockWidgets
Advanced Dock Widget Framework for Qt
https://www.kdab.com/development-resources/qt-tools/kddockwidgets/
Generated by doxygen 1.9.8