From 25dd1494758db4e34393bbbdce9d3c0e846482f7 Mon Sep 17 00:00:00 2001 From: Sergio Martins Date: Sat, 13 Jun 2020 14:42:58 +0100 Subject: [PATCH] Add Widget::mapToGlobal() --- src/private/TitleBar.cpp | 2 +- src/private/indicators/ClassicIndicators.cpp | 2 +- src/private/multisplitter/Widget.h | 1 + src/private/multisplitter/Widget_quick.cpp | 8 +++++++- src/private/multisplitter/Widget_quick.h | 1 + src/private/multisplitter/Widget_qwidget.cpp | 5 +++++ src/private/multisplitter/Widget_qwidget.h | 1 + tests/tst_docks.cpp | 2 +- 8 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/private/TitleBar.cpp b/src/private/TitleBar.cpp index d6238fb4..0bf2fc1c 100644 --- a/src/private/TitleBar.cpp +++ b/src/private/TitleBar.cpp @@ -138,7 +138,7 @@ std::unique_ptr TitleBar::makeWindow() QRect r = m_frame->QWidget::geometry(); qCDebug(hovering) << "TitleBar::makeWindow original geometry" << r; - r.moveTopLeft(m_frame->mapToGlobal(QPoint(0, 0))); + r.moveTopLeft(static_cast(m_frame)->mapToGlobal(QPoint(0, 0))); // TODO: Remove static_cast if it compiles. Ambiguous base for now auto floatingWindow = Config::self().frameworkWidgetFactory()->createFloatingWindow(m_frame); floatingWindow->setSuggestedGeometry(r); diff --git a/src/private/indicators/ClassicIndicators.cpp b/src/private/indicators/ClassicIndicators.cpp index 844e80f1..f996c1a5 100644 --- a/src/private/indicators/ClassicIndicators.cpp +++ b/src/private/indicators/ClassicIndicators.cpp @@ -407,7 +407,7 @@ QRect ClassicIndicators::geometryForRubberband(QRect localRect) const return localRect; QPoint topLeftLocal = localRect.topLeft(); - QPoint topLeftGlobal = m_dropArea->mapToGlobal(topLeftLocal); + QPoint topLeftGlobal = m_dropArea->QWidget::mapToGlobal(topLeftLocal); localRect.moveTopLeft(topLeftGlobal); diff --git a/src/private/multisplitter/Widget.h b/src/private/multisplitter/Widget.h index e9e11f38..c4b1e329 100644 --- a/src/private/multisplitter/Widget.h +++ b/src/private/multisplitter/Widget.h @@ -81,6 +81,7 @@ public: virtual void hide() = 0; virtual void update() = 0; virtual QPoint mapFromGlobal(QPoint) const = 0; + virtual QPoint mapToGlobal(QPoint) const = 0; QSize size() const { return geometry().size(); diff --git a/src/private/multisplitter/Widget_quick.cpp b/src/private/multisplitter/Widget_quick.cpp index 1901af3e..e40664be 100644 --- a/src/private/multisplitter/Widget_quick.cpp +++ b/src/private/multisplitter/Widget_quick.cpp @@ -87,7 +87,7 @@ std::unique_ptr Widget_quick::parentWidget() const return {}; } -std::unique_ptr Widget_qwidget::topLevel() const +std::unique_ptr Widget_quick::topLevel() const { // TODO return {}; @@ -153,6 +153,12 @@ QPoint Widget_quick::mapFromGlobal(QPoint p) const return p; } +QPoint Widget_quick::mapToGlobal(QPoint p) const +{ + qWarning() << Q_FUNC_INFO << "Implement me!"; + return p; +} + QQuickItem *Widget_quick::createQQuickItem(const QString &filename, QQuickItem *parent) const { auto p = parent; diff --git a/src/private/multisplitter/Widget_quick.h b/src/private/multisplitter/Widget_quick.h index 16e1b9c9..d036780c 100644 --- a/src/private/multisplitter/Widget_quick.h +++ b/src/private/multisplitter/Widget_quick.h @@ -63,6 +63,7 @@ public: void setHeight(int height) override; void update() override; QPoint mapFromGlobal(QPoint p) const override; + QPoint mapToGlobal(QPoint p) const override; static QSize widgetMinSize(const QWidget *w); diff --git a/src/private/multisplitter/Widget_qwidget.cpp b/src/private/multisplitter/Widget_qwidget.cpp index a003c601..6aa5fac6 100644 --- a/src/private/multisplitter/Widget_qwidget.cpp +++ b/src/private/multisplitter/Widget_qwidget.cpp @@ -175,3 +175,8 @@ QPoint Widget_qwidget::mapFromGlobal(QPoint p) const { return m_thisWidget->mapFromGlobal(p); } + +QPoint Widget_qwidget::mapToGlobal(QPoint p) const +{ + return m_thisWidget->mapToGlobal(p); +} diff --git a/src/private/multisplitter/Widget_qwidget.h b/src/private/multisplitter/Widget_qwidget.h index af4ed867..7c5f6337 100644 --- a/src/private/multisplitter/Widget_qwidget.h +++ b/src/private/multisplitter/Widget_qwidget.h @@ -66,6 +66,7 @@ public: void setHeight(int height) override; void update() override; QPoint mapFromGlobal(QPoint p) const override; + QPoint mapToGlobal(QPoint p) const override; static QSize widgetMinSize(const QWidget *w); static QSize widgetMaxSize(const QWidget *w); diff --git a/tests/tst_docks.cpp b/tests/tst_docks.cpp index e033357f..a09db16a 100644 --- a/tests/tst_docks.cpp +++ b/tests/tst_docks.cpp @@ -555,7 +555,7 @@ void TestDocks::tst_dock2FloatingWidgetsTabbed() QTest::qWait(1000); // Test is flaky otherwise auto fw2 = dock2->floatingWindow(); - drag(fw2->titleBar(), frame2->mapToGlobal(QPoint(10, 10)), dock3->window()->geometry().center()); + drag(fw2->titleBar(), static_cast(frame2)->mapToGlobal(QPoint(10, 10)), dock3->window()->geometry().center()); QVERIFY(Testing::waitForDeleted(frame1)); QVERIFY(Testing::waitForDeleted(frame2));