Implemented ViewWrapper::window()
Implementation was missing for qtquick and add a bug for qtwidgets.
This commit is contained in:
@@ -32,6 +32,7 @@ std::shared_ptr<ViewWrapper> Window_qtquick::rootView() const
|
||||
qWarning() << Q_FUNC_INFO << "Expected QQuickView";
|
||||
}
|
||||
|
||||
qWarning() << Q_FUNC_INFO << "Window does not have a root";
|
||||
return {};
|
||||
}
|
||||
|
||||
|
||||
@@ -73,12 +73,17 @@ std::shared_ptr<ViewWrapper> ViewWrapper_qtquick::childViewAt(QPoint) const
|
||||
|
||||
std::shared_ptr<Window> ViewWrapper_qtquick::window() const
|
||||
{
|
||||
if (QWindow *w = m_item->window()) {
|
||||
auto windowqtquick = new Window_qtquick(w);
|
||||
return std::shared_ptr<Window>(windowqtquick);
|
||||
}
|
||||
|
||||
return {};
|
||||
}
|
||||
|
||||
bool ViewWrapper_qtquick::isRootView() const
|
||||
{
|
||||
return {};
|
||||
return View_qtquick::isRootView(m_item);
|
||||
}
|
||||
|
||||
void ViewWrapper_qtquick::setVisible(bool)
|
||||
@@ -164,7 +169,10 @@ bool ViewWrapper_qtquick::is(Type t) const
|
||||
|
||||
std::shared_ptr<ViewWrapper> ViewWrapper_qtquick::rootView() const
|
||||
{
|
||||
// return std::shared_ptr<ViewWrapper>(new ViewWrapper_qtquick(m_item->window()));
|
||||
if (Window::Ptr window = this->window())
|
||||
return window->rootView();
|
||||
|
||||
qWarning() << Q_FUNC_INFO << "No window present";
|
||||
return {};
|
||||
}
|
||||
|
||||
@@ -197,9 +205,9 @@ QString ViewWrapper_qtquick::objectName() const
|
||||
return m_item->objectName();
|
||||
}
|
||||
|
||||
QVariant ViewWrapper_qtquick::property(const char *) const
|
||||
QVariant ViewWrapper_qtquick::property(const char *name) const
|
||||
{
|
||||
return {};
|
||||
return m_item->property(name);
|
||||
}
|
||||
|
||||
bool ViewWrapper_qtquick::isNull() const
|
||||
@@ -221,8 +229,9 @@ bool ViewWrapper_qtquick::testAttribute(Qt::WidgetAttribute) const
|
||||
return {};
|
||||
}
|
||||
|
||||
void ViewWrapper_qtquick::setCursor(Qt::CursorShape)
|
||||
void ViewWrapper_qtquick::setCursor(Qt::CursorShape shape)
|
||||
{
|
||||
m_item->QQuickItem::setCursor(shape);
|
||||
}
|
||||
|
||||
QSize ViewWrapper_qtquick::minSize() const
|
||||
|
||||
@@ -557,13 +557,13 @@ QVariant View_qtquick::property(const char *name) const
|
||||
return QObject::property(name);
|
||||
}
|
||||
|
||||
bool View_qtquick::isRootView() const
|
||||
/*static*/ bool View_qtquick::isRootView(const QQuickItem *item)
|
||||
{
|
||||
QQuickItem *parent = parentItem();
|
||||
QQuickItem *parent = item->parentItem();
|
||||
if (!parent)
|
||||
return true;
|
||||
|
||||
if (QQuickView *w = quickView()) {
|
||||
if (QQuickView *w = qobject_cast<QQuickView *>(item->window())) {
|
||||
if (parent == w->contentItem() || parent == w->rootObject())
|
||||
return true;
|
||||
}
|
||||
@@ -571,6 +571,11 @@ bool View_qtquick::isRootView() const
|
||||
return false;
|
||||
}
|
||||
|
||||
bool View_qtquick::isRootView() const
|
||||
{
|
||||
return View_qtquick::isRootView(this);
|
||||
}
|
||||
|
||||
QQuickView *View_qtquick::quickView() const
|
||||
{
|
||||
return qobject_cast<QQuickView *>(QQuickItem::window());
|
||||
|
||||
@@ -96,6 +96,7 @@ public:
|
||||
void activateWindow() override;
|
||||
void raise() override;
|
||||
QVariant property(const char *name) const override;
|
||||
static bool isRootView(const QQuickItem *);
|
||||
bool isRootView() const override;
|
||||
QQuickView *quickView() const;
|
||||
QPoint mapToGlobal(QPoint localPt) const override;
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
#include <QWidget>
|
||||
#include <QVariant>
|
||||
#include <QWindow>
|
||||
#include <QDebug>
|
||||
|
||||
using namespace KDDockWidgets;
|
||||
|
||||
@@ -37,6 +38,7 @@ std::shared_ptr<ViewWrapper> Window_qtwidgets::rootView() const
|
||||
if (QWidget *widget = m_window->property("kddockwidgets_qwidget").value<QWidget *>())
|
||||
return std::shared_ptr<ViewWrapper>(new Views::ViewWrapper_qtwidgets(widget));
|
||||
|
||||
qWarning() << Q_FUNC_INFO << "Window does not have a root";
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
|
||||
@@ -141,7 +141,7 @@ void ViewWrapper_qtwidgets::setGeometry(QRect rect)
|
||||
std::shared_ptr<Window> ViewWrapper_qtwidgets::window() const
|
||||
{
|
||||
if (QWindow *w = m_widget->window()->windowHandle())
|
||||
return std::shared_ptr<Window>(new Window_qtwidgets(w));
|
||||
return std::shared_ptr<Window>(new Window_qtwidgets(m_widget->window()));
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
@@ -45,6 +45,22 @@ TEST_CASE("ViewWrapper::setParent")
|
||||
delete r2;
|
||||
}
|
||||
|
||||
TEST_CASE("ViewWrapper::windowHandle,rootView,Window::rootView")
|
||||
{
|
||||
auto r = Platform::instance()->tests_createView({});
|
||||
auto rootView = r->asWrapper();
|
||||
auto childView = Platform::instance()->tests_createView({ true }, r)->asWrapper();
|
||||
|
||||
auto window = rootView->window();
|
||||
REQUIRE(window);
|
||||
CHECK_EQ(window->handle(), childView->window()->handle());
|
||||
CHECK(rootView->rootView()->equals(rootView));
|
||||
CHECK(childView->rootView()->equals(rootView));
|
||||
|
||||
REQUIRE(window->rootView());
|
||||
CHECK(window->rootView()->equals(rootView));
|
||||
}
|
||||
|
||||
TEST_CASE("ViewWrapper::minSize")
|
||||
{
|
||||
const QSize sizeHint = {};
|
||||
|
||||
Reference in New Issue
Block a user