22#include "private/multisplitter/Item_p.h"
23#include "private/DockRegistry_p.h"
24#include "private/Utils_p.h"
25#include "private/DragController_p.h"
29#include <QOperatingSystemVersion>
31#ifdef KDDOCKWIDGETS_QTQUICK
32#include "private/quick/Helpers_p.h"
49 delete m_frameworkWidgetFactory;
54 QQmlEngine *m_qmlEngine =
nullptr;
63 qreal m_draggedWindowOpacity = Q_QNAN;
64 int m_mdiPopupThreshold = 250;
65 bool m_dropIndicatorsInhibited =
false;
66#ifdef KDDOCKWIDGETS_QTQUICK
67 QtQuickHelpers m_qquickHelpers;
102 auto dr = DockRegistry::self();
103 if (!dr->isEmpty(
true)) {
104 qWarning() << Q_FUNC_INFO <<
"Only use this function at startup before creating any DockWidget or MainWindow"
105 <<
"; These are already created: " << dr->mainWindowsNames()
106 << dr->dockWidgetNames() << dr->floatingWindows();
120 d->m_dockWidgetFactoryFunc = func;
125 return d->m_dockWidgetFactoryFunc;
130 d->m_mainWindowFactoryFunc = func;
135 return d->m_mainWindowFactoryFunc;
141 delete d->m_frameworkWidgetFactory;
142 d->m_frameworkWidgetFactory = wf;
147 return d->m_frameworkWidgetFactory;
157 if (!DockRegistry::self()->isEmpty(
true)) {
158 qWarning() << Q_FUNC_INFO <<
"Only use this function at startup before creating any DockWidget or MainWindow";
167 d->m_draggedWindowOpacity = opacity;
172 return d->m_draggedWindowOpacity;
177 d->m_tabbingAllowedFunc = func;
182 return d->m_tabbingAllowedFunc;
187 d->m_dropIndicatorAllowedFunc = func;
192 return d->m_dropIndicatorAllowedFunc;
197 if (!DockRegistry::self()->isEmpty(
false)) {
198 qWarning() << Q_FUNC_INFO <<
"Only use this function at startup before creating any DockWidget or MainWindow";
202 Layouting::Item::hardcodedMinimumSize = size;
207 return Layouting::Item::hardcodedMinimumSize;
212 if (!DockRegistry::self()->isEmpty(
false)) {
213 qWarning() << Q_FUNC_INFO <<
"Only use this function at startup before creating any DockWidget or MainWindow";
217 Layouting::Item::hardcodedMaximumSize = size;
222 return Layouting::Item::hardcodedMaximumSize;
227 return d->m_internalFlags;
232 d->m_internalFlags =
flags;
235#ifdef KDDOCKWIDGETS_QTQUICK
236void Config::setQmlEngine(QQmlEngine *qmlEngine)
238 if (d->m_qmlEngine) {
239 qWarning() << Q_FUNC_INFO <<
"Already has QML engine";
244 qWarning() << Q_FUNC_INFO <<
"Null QML engine";
248 auto dr = DockRegistry::self();
249 QQmlContext *context = qmlEngine->rootContext();
250 context->setContextProperty(QStringLiteral(
"_kddwHelpers"), &d->m_qquickHelpers);
251 context->setContextProperty(QStringLiteral(
"_kddwDockRegistry"), dr);
252 context->setContextProperty(QStringLiteral(
"_kddwDragController"), DragController::instance());
253 context->setContextProperty(QStringLiteral(
"_kddw_widgetFactory"), d->m_frameworkWidgetFactory);
255 d->m_qmlEngine = qmlEngine;
258QQmlEngine *Config::qmlEngine()
const
261 qWarning() <<
"Please call KDDockWidgets::Config::self()->setQmlEngine(engine)";
263 return d->m_qmlEngine;
267void Config::Private::fixFlags()
272 m_flags = m_flags & ~Flag_AeroSnapWithClientDecos;
275 m_flags |= Flag_AeroSnapWithClientDecos;
279 if ((m_flags & Flag_AeroSnapWithClientDecos) && (m_flags & Flag_NativeTitleBar)) {
281 m_flags = m_flags & ~Flag_AeroSnapWithClientDecos;
283#elif defined(Q_OS_MACOS)
285 m_flags = m_flags & ~Flag_AeroSnapWithClientDecos;
287 if (KDDockWidgets::isWayland()) {
290 m_flags |= Flag_NativeTitleBar;
296 m_flags = m_flags & ~Flag_NativeTitleBar;
297 m_flags = m_flags & ~Flag_AeroSnapWithClientDecos;
301#if (!defined(Q_OS_WIN) && !defined(Q_OS_MACOS))
303 m_flags = m_flags & ~Flag_AeroSnapWithClientDecos;
307#if defined(DOCKS_DEVELOPER_MODE)
309 if (m_internalFlags & InternalFlag_NoAeroSnap) {
311 m_flags = m_flags & ~Flag_AeroSnapWithClientDecos;
315 if (m_flags & Flag_DontUseUtilityFloatingWindows) {
316 m_internalFlags |= InternalFlag_DontUseParentForFloatingWindows;
317 m_internalFlags |= InternalFlag_DontUseQtToolWindowsForFloatingWindows;
320 if (m_flags & Flag_ShowButtonsOnTabBarIfTitleBarHidden) {
322 m_flags |= Flag_HideTitleBarWhenTabsVisible;
328 d->m_disabledPaintEvents = widgets;
333 return d->m_disabledPaintEvents;
338 d->m_mdiPopupThreshold = threshold;
343 return d->m_mdiPopupThreshold;
348 if (d->m_dropIndicatorsInhibited != inhibit) {
349 d->m_dropIndicatorsInhibited = inhibit;
350 Q_EMIT DockRegistry::self()->dropIndicatorsInhibitedChanged(inhibit);
356 return d->m_dropIndicatorsInhibited;
361 qDebug() <<
"Flags: " << d->m_flags << d->m_internalFlags;
Application-wide config to tune certain behaviours of the framework.
Config::Flags flags() const
returns the flags;
int separatorThickness() const
Returns the thickness of the separator.
void setSeparatorThickness(int value)
setter for separatorThickness Note: Only use this function at startup before creating any Item
void setFlags(Flags)
sets the flags. Set only before creating any Item
static Config & self()
returns the singleton Config instance
QOperatingSystemVersion current()