Allow DragController views to have access to its controller
For consistency
This commit is contained in:
@@ -43,6 +43,7 @@ enum class Type {
|
||||
DropArea = 4096,
|
||||
MDILayout = 8192,
|
||||
RubberBand = 0x4000,
|
||||
DropAreaIndicatorOverlay = 0x8000,
|
||||
|
||||
LAST = RubberBand // Keep last
|
||||
};
|
||||
|
||||
@@ -83,7 +83,7 @@ public:
|
||||
/// @brief Create an empty view
|
||||
/// For Qt this would just returns a empty QWidget or QQuickItem
|
||||
/// other frontends can return something as basic.
|
||||
virtual View *createView(View *parent = nullptr) const = 0;
|
||||
virtual View *createView(Controller *, View *parent = nullptr) const = 0;
|
||||
|
||||
/// @brief Returns whether this platform is QtWidgets
|
||||
bool isQtWidgets() const;
|
||||
|
||||
@@ -24,7 +24,7 @@ using namespace KDDockWidgets;
|
||||
using namespace KDDockWidgets::Controllers;
|
||||
|
||||
DropIndicatorOverlay::DropIndicatorOverlay(Controllers::DropArea *dropArea)
|
||||
: Controller(Type::None, Platform::instance()->createView(dropArea->view()))
|
||||
: Controller(Type::DropAreaIndicatorOverlay, Platform::instance()->createView(this, dropArea->view()))
|
||||
, m_dropArea(dropArea)
|
||||
{
|
||||
view()->setVisible(false);
|
||||
|
||||
@@ -117,7 +117,7 @@ QSize Platform_dummy::screenSizeFor(View *) const
|
||||
return {};
|
||||
}
|
||||
|
||||
View *Platform_dummy::createView(View *) const
|
||||
View *Platform_dummy::createView(Controller *, View *) const
|
||||
{
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
@@ -34,7 +34,7 @@ public:
|
||||
int screenNumberFor(View *) const override;
|
||||
QSize screenSizeFor(View *) const override;
|
||||
|
||||
View *createView(View *parent = nullptr) const override;
|
||||
View *createView(Controller *controller, View *parent = nullptr) const override;
|
||||
bool inDisallowedDragView(QPoint globalPos) const override;
|
||||
bool usesFallbackMouseGrabber() const override;
|
||||
void ungrabMouse() override;
|
||||
|
||||
@@ -181,9 +181,9 @@ ViewFactory_qtquick *Platform_qtquick::viewFactory() const
|
||||
return static_cast<ViewFactory_qtquick *>(Config::self().viewFactory());
|
||||
}
|
||||
|
||||
View *Platform_qtquick::createView(View *parent) const
|
||||
View *Platform_qtquick::createView(Controller *controller, View *parent) const
|
||||
{
|
||||
return new Views::View_qtquick(nullptr, Type::None, Views::asQQuickItem(parent));
|
||||
return new Views::View_qtquick(controller, Type::None, Views::asQQuickItem(parent));
|
||||
}
|
||||
|
||||
/** static */
|
||||
|
||||
@@ -46,7 +46,7 @@ public:
|
||||
QSize screenSizeFor(View *) const override;
|
||||
void setQmlEngine(QQmlEngine *);
|
||||
QQmlEngine *qmlEngine() const;
|
||||
View *createView(View *parent = nullptr) const override;
|
||||
View *createView(Controller *controller, View *parent = nullptr) const override;
|
||||
bool usesFallbackMouseGrabber() const override;
|
||||
bool inDisallowedDragView(QPoint globalPos) const override;
|
||||
void ungrabMouse() override;
|
||||
|
||||
@@ -95,6 +95,7 @@ static Controller *controllerForItem(QQuickItem *item)
|
||||
case Type::RubberBand:
|
||||
case Type::LayoutItem:
|
||||
case Type::ViewWrapper:
|
||||
case Type::DropAreaIndicatorOverlay:
|
||||
case Type::None:
|
||||
// skip internal types
|
||||
continue;
|
||||
@@ -285,6 +286,7 @@ bool ViewWrapper_qtquick::is(Type t) const
|
||||
return false; // Not support by qtquick
|
||||
case Type::LayoutItem:
|
||||
case Type::None:
|
||||
case Type::DropAreaIndicatorOverlay:
|
||||
qWarning() << Q_FUNC_INFO << "These are framework internals that are not wrapped";
|
||||
return false;
|
||||
case Type::ViewWrapper:
|
||||
|
||||
@@ -167,9 +167,9 @@ int Platform_qtwidgets::startDragDistance_impl() const
|
||||
return QApplication::startDragDistance();
|
||||
}
|
||||
|
||||
View *Platform_qtwidgets::createView(View *parent) const
|
||||
View *Platform_qtwidgets::createView(Controller *controller, View *parent) const
|
||||
{
|
||||
return new Views::View_qtwidgets<QWidget>(nullptr, Type::None, Views::View_qt::asQWidget(parent));
|
||||
return new Views::View_qtwidgets<QWidget>(controller, Type::None, Views::View_qt::asQWidget(parent));
|
||||
}
|
||||
|
||||
bool Platform_qtwidgets::usesFallbackMouseGrabber() const
|
||||
|
||||
@@ -38,7 +38,7 @@ public:
|
||||
QSize screenSizeFor(View *) const override;
|
||||
|
||||
int startDragDistance_impl() const override;
|
||||
View *createView(View *parent = nullptr) const override;
|
||||
View *createView(Controller *controller, View *parent = nullptr) const override;
|
||||
bool inDisallowedDragView(QPoint globalPos) const override;
|
||||
bool usesFallbackMouseGrabber() const override;
|
||||
void ungrabMouse() override;
|
||||
|
||||
@@ -96,9 +96,11 @@ static Controller *controllerForWidget(QWidget *widget)
|
||||
case Type::RubberBand:
|
||||
case Type::LayoutItem:
|
||||
case Type::ViewWrapper:
|
||||
case Type::DropAreaIndicatorOverlay:
|
||||
case Type::None:
|
||||
// skip internal types
|
||||
continue;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -243,6 +245,7 @@ bool ViewWrapper_qtwidgets::is(Type t) const
|
||||
return qobject_cast<MDIArea_qtwidgets *>(m_widget);
|
||||
case Type::LayoutItem:
|
||||
case Type::None:
|
||||
case Type::DropAreaIndicatorOverlay:
|
||||
qWarning() << Q_FUNC_INFO << "These are framework internals that are not wrapped";
|
||||
return false;
|
||||
case Type::ViewWrapper:
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
|
||||
TEST_CASE("Separator Ctor")
|
||||
{
|
||||
auto hostView = Platform::instance()->createView();
|
||||
auto hostView = Platform::instance()->createView(nullptr);
|
||||
|
||||
{
|
||||
Controllers::Separator separator(hostView);
|
||||
|
||||
Reference in New Issue
Block a user