Don't depend directly on QSizePolicy, as that's QtWidgets
Introduce our own enum. Soon our qtquick frontend won't link against QtWidgets
This commit is contained in:
@@ -204,6 +204,16 @@ enum class DropIndicatorType
|
||||
};
|
||||
Q_ENUM_NS(DropIndicatorType)
|
||||
|
||||
enum class SizePolicy
|
||||
{
|
||||
Fixed = 0,
|
||||
Minimum = 1,
|
||||
Maximum = 4,
|
||||
Preferred = 5,
|
||||
Expanding = 7
|
||||
};
|
||||
Q_ENUM_NS(SizePolicy)
|
||||
|
||||
///@internal
|
||||
enum SuggestedGeometryHint {
|
||||
SuggestedGeometryHint_None,
|
||||
|
||||
@@ -12,12 +12,12 @@
|
||||
#pragma once
|
||||
|
||||
#include "docks_export.h"
|
||||
#include "KDDockWidgets.h"
|
||||
#include "Controller.h"
|
||||
|
||||
#include <QSize> // TODO Remove Qt headers, introduce Size and Rect structs
|
||||
#include <QSize> // TODOm4 Remove Qt headers, introduce Size and Rect structs
|
||||
#include <QRect>
|
||||
#include <QObject>
|
||||
#include <QSizePolicy>
|
||||
|
||||
#include "kdbindings/signal.h"
|
||||
|
||||
@@ -146,8 +146,9 @@ public:
|
||||
virtual QPoint mapToGlobal(QPoint) const = 0;
|
||||
virtual QPoint mapFromGlobal(QPoint) const = 0;
|
||||
virtual QPoint mapTo(View *, QPoint) const = 0;
|
||||
virtual void setSizePolicy(QSizePolicy) = 0;
|
||||
virtual QSizePolicy sizePolicy() const = 0;
|
||||
virtual void setSizePolicy(SizePolicy, SizePolicy) = 0;
|
||||
virtual SizePolicy verticalSizePolicy() const = 0;
|
||||
virtual SizePolicy horizontalSizePolicy() const = 0;
|
||||
void closeRootView();
|
||||
QRect windowGeometry() const;
|
||||
QSize parentSize() const;
|
||||
|
||||
@@ -73,7 +73,7 @@ void ViewWrapper::raise()
|
||||
qFatal("Not implemented");
|
||||
}
|
||||
|
||||
void ViewWrapper::setSizePolicy(QSizePolicy)
|
||||
void ViewWrapper::setSizePolicy(SizePolicy, SizePolicy)
|
||||
{
|
||||
qFatal("Not implemented");
|
||||
}
|
||||
|
||||
@@ -42,7 +42,7 @@ public:
|
||||
void update() override;
|
||||
void raiseAndActivate() override;
|
||||
void raise() override;
|
||||
void setSizePolicy(QSizePolicy) override;
|
||||
void setSizePolicy(SizePolicy, SizePolicy) override;
|
||||
void setFlag(Qt::WindowType, bool = true) override;
|
||||
void setAttribute(Qt::WidgetAttribute, bool enable = true) override;
|
||||
Qt::WindowFlags flags() const override;
|
||||
|
||||
@@ -168,7 +168,7 @@ void DockWidget::setGuestView(std::shared_ptr<ViewWrapper> guest)
|
||||
|
||||
d->guest = guest;
|
||||
if (guest)
|
||||
view()->setSizePolicy(guest->sizePolicy());
|
||||
view()->setSizePolicy(guest->horizontalSizePolicy(), guest->verticalSizePolicy());
|
||||
|
||||
Q_EMIT guestViewChanged();
|
||||
}
|
||||
|
||||
@@ -63,7 +63,7 @@ TitleBar::TitleBar(FloatingWindow *parent)
|
||||
void TitleBar::init()
|
||||
{
|
||||
view()->init();
|
||||
view()->setSizePolicy(QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed));
|
||||
view()->setSizePolicy(SizePolicy::Minimum, SizePolicy::Fixed);
|
||||
|
||||
connect(this, &TitleBar::isFocusedChanged, this, [this] {
|
||||
// repaint
|
||||
|
||||
@@ -444,10 +444,18 @@ const View *ViewWrapper_qtquick::unwrap() const
|
||||
return qobject_cast<const View_qtquick *>(m_item);
|
||||
}
|
||||
|
||||
QSizePolicy ViewWrapper_qtquick::sizePolicy() const
|
||||
SizePolicy ViewWrapper_qtquick::verticalSizePolicy() const
|
||||
{
|
||||
if (auto view = unwrap()) {
|
||||
return view->sizePolicy();
|
||||
return view->verticalSizePolicy();
|
||||
}
|
||||
return {};
|
||||
}
|
||||
|
||||
SizePolicy ViewWrapper_qtquick::horizontalSizePolicy() const
|
||||
{
|
||||
if (auto view = unwrap()) {
|
||||
return view->horizontalSizePolicy();
|
||||
}
|
||||
return {};
|
||||
}
|
||||
|
||||
@@ -63,7 +63,8 @@ public:
|
||||
bool close() override;
|
||||
Qt::FocusPolicy focusPolicy() const override;
|
||||
bool hasFocus() const override;
|
||||
QSizePolicy sizePolicy() const override;
|
||||
SizePolicy verticalSizePolicy() const override;
|
||||
SizePolicy horizontalSizePolicy() const override;
|
||||
|
||||
const View *unwrap() const;
|
||||
View *unwrap();
|
||||
|
||||
@@ -607,14 +607,20 @@ void View_qtquick::setWindowOpacity(double v)
|
||||
w->setOpacity(v);
|
||||
}
|
||||
|
||||
void View_qtquick::setSizePolicy(QSizePolicy sp)
|
||||
void View_qtquick::setSizePolicy(SizePolicy h, SizePolicy v)
|
||||
{
|
||||
m_sizePolicy = sp;
|
||||
m_horizontalSizePolicy = h;
|
||||
m_verticalSizePolicy = v;
|
||||
}
|
||||
|
||||
QSizePolicy View_qtquick::sizePolicy() const
|
||||
SizePolicy View_qtquick::verticalSizePolicy() const
|
||||
{
|
||||
return m_sizePolicy;
|
||||
return m_verticalSizePolicy;
|
||||
}
|
||||
|
||||
SizePolicy View_qtquick::horizontalSizePolicy() const
|
||||
{
|
||||
return m_horizontalSizePolicy;
|
||||
}
|
||||
|
||||
void View_qtquick::setWindowTitle(const QString &title)
|
||||
|
||||
@@ -20,7 +20,6 @@
|
||||
#include <QDebug>
|
||||
#include <QEvent>
|
||||
#include <QResizeEvent>
|
||||
#include <QSizePolicy>
|
||||
#include <QQuickItem>
|
||||
#include <QQuickWindow>
|
||||
#include <QScopedValueRollback>
|
||||
@@ -115,8 +114,9 @@ public:
|
||||
QPoint mapFromGlobal(QPoint globalPt) const override;
|
||||
QPoint mapTo(View *parent, QPoint pos) const override;
|
||||
void setWindowOpacity(double v) override;
|
||||
void setSizePolicy(QSizePolicy sp) override;
|
||||
QSizePolicy sizePolicy() const override;
|
||||
void setSizePolicy(SizePolicy, SizePolicy) override;
|
||||
SizePolicy verticalSizePolicy() const override;
|
||||
SizePolicy horizontalSizePolicy() const override;
|
||||
|
||||
static bool close(QQuickItem *);
|
||||
bool close() override;
|
||||
@@ -186,7 +186,8 @@ private:
|
||||
void updateNormalGeometry();
|
||||
bool m_inSetParent = false;
|
||||
QSize m_sizeHint;
|
||||
QSizePolicy m_sizePolicy = QSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
|
||||
SizePolicy m_verticalSizePolicy = SizePolicy::Preferred;
|
||||
SizePolicy m_horizontalSizePolicy = SizePolicy::Preferred;
|
||||
Qt::WindowFlags m_windowFlags;
|
||||
int m_widgetAttributes = 0; // Qt::WidgetAttribute
|
||||
Qt::FocusPolicy m_focusPolicy = Qt::NoFocus;
|
||||
|
||||
@@ -29,6 +29,13 @@
|
||||
|
||||
using namespace KDDockWidgets;
|
||||
|
||||
static_assert(SizePolicy::Fixed == SizePolicy(QSizePolicy::Fixed), "Enums dont match");
|
||||
static_assert(SizePolicy::Minimum == SizePolicy(QSizePolicy::Minimum), "Enums dont match");
|
||||
static_assert(SizePolicy::Maximum == SizePolicy(QSizePolicy::Maximum), "Enums dont match");
|
||||
static_assert(SizePolicy::Preferred == SizePolicy(QSizePolicy::Preferred), "Enums dont match");
|
||||
static_assert(SizePolicy::Expanding == SizePolicy(QSizePolicy::Expanding), "Enums dont match");
|
||||
|
||||
|
||||
Platform_qtwidgets::Platform_qtwidgets()
|
||||
{
|
||||
init();
|
||||
|
||||
@@ -62,7 +62,7 @@ public:
|
||||
{
|
||||
create();
|
||||
setMinimumSize(opts.minSize.boundedTo(opts.maxSize));
|
||||
setSizePolicy(QSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred));
|
||||
setSizePolicy(SizePolicy::Preferred, SizePolicy::Preferred);
|
||||
}
|
||||
|
||||
QSize sizeHint() const override
|
||||
|
||||
@@ -358,7 +358,12 @@ bool ViewWrapper_qtwidgets::hasFocus() const
|
||||
return m_widget->hasFocus();
|
||||
}
|
||||
|
||||
QSizePolicy ViewWrapper_qtwidgets::sizePolicy() const
|
||||
SizePolicy ViewWrapper_qtwidgets::horizontalSizePolicy() const
|
||||
{
|
||||
return m_widget->sizePolicy();
|
||||
return SizePolicy(m_widget->sizePolicy().horizontalPolicy());
|
||||
}
|
||||
|
||||
SizePolicy ViewWrapper_qtwidgets::verticalSizePolicy() const
|
||||
{
|
||||
return SizePolicy(m_widget->sizePolicy().verticalPolicy());
|
||||
}
|
||||
|
||||
@@ -63,7 +63,8 @@ public:
|
||||
Qt::FocusPolicy focusPolicy() const override;
|
||||
void setFocusPolicy(Qt::FocusPolicy) override;
|
||||
bool hasFocus() const override;
|
||||
QSizePolicy sizePolicy() const override;
|
||||
SizePolicy horizontalSizePolicy() const override;
|
||||
SizePolicy verticalSizePolicy() const override;
|
||||
QWidget *widget() const;
|
||||
|
||||
private:
|
||||
|
||||
@@ -89,11 +89,12 @@ public:
|
||||
QSize max = maximumSize();
|
||||
max = boundedMaxSize(min, max); // for safety against weird values
|
||||
|
||||
const QSizePolicy policy = sizePolicy();
|
||||
const SizePolicy vPolicy = verticalSizePolicy();
|
||||
const SizePolicy hPolicy = horizontalSizePolicy();
|
||||
|
||||
if (policy.verticalPolicy() == QSizePolicy::Fixed || policy.verticalPolicy() == QSizePolicy::Maximum)
|
||||
if (vPolicy == SizePolicy::Fixed || vPolicy == SizePolicy::Maximum)
|
||||
max.setHeight(qMin(max.height(), sizeHint().height()));
|
||||
if (policy.horizontalPolicy() == QSizePolicy::Fixed || policy.horizontalPolicy() == QSizePolicy::Maximum)
|
||||
if (hPolicy == SizePolicy::Fixed || hPolicy == SizePolicy::Maximum)
|
||||
max.setWidth(qMin(max.width(), sizeHint().width()));
|
||||
|
||||
max = View::boundedMaxSize(min, max); // for safety against weird values
|
||||
@@ -246,14 +247,19 @@ public:
|
||||
return QWidget::mapTo(qobject_cast<QWidget *>(someAncestor->asQObject()), pos);
|
||||
}
|
||||
|
||||
void setSizePolicy(QSizePolicy policy) override
|
||||
void setSizePolicy(SizePolicy h, SizePolicy v) override
|
||||
{
|
||||
Base::setSizePolicy(policy);
|
||||
Base::setSizePolicy(QSizePolicy(QSizePolicy::Policy(h), QSizePolicy::Policy(v)));
|
||||
}
|
||||
|
||||
QSizePolicy sizePolicy() const override
|
||||
SizePolicy verticalSizePolicy() const override
|
||||
{
|
||||
return QWidget::sizePolicy();
|
||||
return SizePolicy(Base::sizePolicy().verticalPolicy());
|
||||
}
|
||||
|
||||
SizePolicy horizontalSizePolicy() const override
|
||||
{
|
||||
return SizePolicy(Base::sizePolicy().horizontalPolicy());
|
||||
}
|
||||
|
||||
void setWindowOpacity(double v) override
|
||||
|
||||
@@ -1048,7 +1048,7 @@ void TestQtWidgets::tst_maximumSizePolicy()
|
||||
|
||||
const int maxHeight = 250;
|
||||
auto widget = Platform::instance()->tests_createView({ true, QSize(250, maxHeight), QSize(200, 200) });
|
||||
widget->setSizePolicy({ QSizePolicy::Preferred, QSizePolicy::Maximum });
|
||||
widget->setSizePolicy(SizePolicy::Preferred, SizePolicy::Maximum);
|
||||
|
||||
auto dock1 = createDockWidget("dock1", widget);
|
||||
dock1->show();
|
||||
@@ -1338,8 +1338,8 @@ void TestQtWidgets::tst_fixedSizePolicy()
|
||||
const int buttonMaxHeight = button->sizeHint().height();
|
||||
|
||||
QCOMPARE(dock1->view()->sizeHint(), button->sizeHint());
|
||||
QCOMPARE(dock1->view()->sizePolicy().verticalPolicy(), button->sizePolicy().verticalPolicy());
|
||||
QCOMPARE(dock1->view()->sizePolicy().horizontalPolicy(), button->sizePolicy().horizontalPolicy());
|
||||
QCOMPARE(dock1->view()->verticalSizePolicy(), SizePolicy(button->sizePolicy().verticalPolicy()));
|
||||
QCOMPARE(dock1->view()->horizontalSizePolicy(), SizePolicy(button->sizePolicy().horizontalPolicy()));
|
||||
|
||||
QCOMPARE(frame->view()->maxSizeHint().height(), qMax(buttonMaxHeight, Layouting::Item::hardcodedMinimumSize.height()));
|
||||
}
|
||||
|
||||
@@ -2685,7 +2685,7 @@ void TestDocks::tst_honourGeometryOfHiddenWindow()
|
||||
|
||||
auto d1 = newDockWidget("1");
|
||||
auto guest = Platform::instance()->tests_createFocusableView({ true });
|
||||
guest->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding));
|
||||
guest->setSizePolicy(SizePolicy::Expanding, SizePolicy::Expanding);
|
||||
d1->setGuestView(guest->asWrapper());
|
||||
|
||||
QVERIFY(!d1->isVisible());
|
||||
|
||||
@@ -88,6 +88,6 @@ TEST_CASE("ViewWrapper::focusPolicy")
|
||||
TEST_CASE("ViewWrapper::sizePolicy")
|
||||
{
|
||||
auto rootView = createViewAndWindow({});
|
||||
CHECK_EQ(rootView->asWrapper()->sizePolicy().horizontalPolicy(), QSizePolicy::Preferred);
|
||||
CHECK_EQ(rootView->asWrapper()->sizePolicy().verticalPolicy(), QSizePolicy::Preferred);
|
||||
CHECK_EQ(rootView->asWrapper()->horizontalSizePolicy(), SizePolicy::Preferred);
|
||||
CHECK_EQ(rootView->asWrapper()->verticalSizePolicy(), SizePolicy::Preferred);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user