From 30cdae912f1ab7c0960d172189a69b6893d185eb Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Thu, 6 Aug 2020 13:42:30 +0200 Subject: [PATCH] Prepare for QDesktopWidget removal Change-Id: I9aa2eadea16b5795ee2c4e7b21a24f356cfd3b03 Reviewed-by: Eike Ziller Reviewed-by: hjk Reviewed-by: Oliver Wolff --- src/libs/utils/tooltip/tips.cpp | 47 +++++-------------- src/libs/utils/tooltip/tips.h | 11 ++--- src/libs/utils/tooltip/tooltip.cpp | 27 ++++------- src/libs/utils/tooltip/tooltip.h | 4 +- .../actionmanager/actionmanager.cpp | 5 +- .../debugger/debuggertooltipmanager.cpp | 4 +- .../codeassist/functionhintproposalwidget.cpp | 5 +- .../codeassist/genericproposalwidget.cpp | 12 ++--- 8 files changed, 36 insertions(+), 79 deletions(-) diff --git a/src/libs/utils/tooltip/tips.cpp b/src/libs/utils/tooltip/tips.cpp index 14bebe7c848..cab6bad63c0 100644 --- a/src/libs/utils/tooltip/tips.cpp +++ b/src/libs/utils/tooltip/tips.cpp @@ -29,25 +29,21 @@ #include #include -#include +#include #include +#include +#include #include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include - #include #include +#include +#include +#include +#include +#include +#include #include -#include -#include #include @@ -127,10 +123,9 @@ void ColorTip::setContent(const QVariant &content) tilePainter.fillRect(size, size, size, size, col); } -void ColorTip::configure(const QPoint &pos, QWidget *w) +void ColorTip::configure(const QPoint &pos) { Q_UNUSED(pos) - Q_UNUSED(w) update(); } @@ -197,7 +192,7 @@ bool TextTip::isInteractive() const return likelyContainsLink(m_text); } -void TextTip::configure(const QPoint &pos, QWidget *w) +void TextTip::configure(const QPoint &pos) { setTextFormat(m_format); setText(m_text); @@ -211,7 +206,7 @@ void TextTip::configure(const QPoint &pos, QWidget *w) // Try to find a nice width without unnecessary wrapping. setWordWrap(false); int tipWidth = sizeHint().width(); - const int screenWidth = screenGeometry(pos, w).width(); + const int screenWidth = QGuiApplication::screenAt(pos)->availableGeometry().width(); const int maxDesiredWidth = int(screenWidth * .5); if (tipWidth > maxDesiredWidth) { setWordWrap(true); @@ -273,7 +268,7 @@ void WidgetTip::setContent(const QVariant &content) m_widget = content.value(); } -void WidgetTip::configure(const QPoint &pos, QWidget *) +void WidgetTip::configure(const QPoint &pos) { QTC_ASSERT(m_widget && m_layout->count() == 0, return); @@ -319,21 +314,5 @@ bool WidgetTip::equals(int typeId, const QVariant &other, const QVariant &otherC && other.value() == m_widget; } - -int screenNumber(const QPoint &pos, QWidget *w) -{ - if (QApplication::desktop()->isVirtualDesktop()) - return QApplication::desktop()->screenNumber(pos); - else - return QApplication::desktop()->screenNumber(w); -} - -QRect screenGeometry(const QPoint &pos, QWidget *w) -{ - if (HostOsInfo::isMacHost()) - return QApplication::desktop()->availableGeometry(screenNumber(pos, w)); - return QApplication::desktop()->screenGeometry(screenNumber(pos, w)); -} - } // namespace Internal } // namespace Utils diff --git a/src/libs/utils/tooltip/tips.h b/src/libs/utils/tooltip/tips.h index 9200c2a6dd7..53dde1f431d 100644 --- a/src/libs/utils/tooltip/tips.h +++ b/src/libs/utils/tooltip/tips.h @@ -36,9 +36,6 @@ namespace Utils { namespace Internal { -int screenNumber(const QPoint &pos, QWidget *w); -QRect screenGeometry(const QPoint &pos, QWidget *w); - class TipLabel : public QLabel { public: @@ -47,7 +44,7 @@ public: virtual void setContent(const QVariant &content) = 0; virtual bool isInteractive() const { return false; } virtual int showTime() const = 0; - virtual void configure(const QPoint &pos, QWidget *w) = 0; + virtual void configure(const QPoint &pos) = 0; virtual bool canHandleContentReplacement(int typeId) const = 0; virtual bool equals(int typeId, const QVariant &other, const QVariant &contextHelp) const = 0; virtual void setContextHelp(const QVariant &help); @@ -69,7 +66,7 @@ public: void setContent(const QVariant &content) override; bool isInteractive() const override; - void configure(const QPoint &pos, QWidget *w) override; + void configure(const QPoint &pos) override; bool canHandleContentReplacement(int typeId) const override; int showTime() const override; bool equals(int typeId, const QVariant &other, const QVariant &otherContextHelp) const override; @@ -87,7 +84,7 @@ public: ColorTip(QWidget *parent); void setContent(const QVariant &content) override; - void configure(const QPoint &pos, QWidget *w) override; + void configure(const QPoint &pos) override; bool canHandleContentReplacement(int typeId) const override; int showTime() const override { return 4000; } bool equals(int typeId, const QVariant &other, const QVariant &otherContextHelp) const override; @@ -107,7 +104,7 @@ public: void pinToolTipWidget(QWidget *parent); void setContent(const QVariant &content) override; - void configure(const QPoint &pos, QWidget *w) override; + void configure(const QPoint &pos) override; bool canHandleContentReplacement(int typeId) const override; int showTime() const override { return 30000; } bool equals(int typeId, const QVariant &other, const QVariant &otherContextHelp) const override; diff --git a/src/libs/utils/tooltip/tooltip.cpp b/src/libs/utils/tooltip/tooltip.cpp index 2885f53ed7f..b665cc39423 100644 --- a/src/libs/utils/tooltip/tooltip.cpp +++ b/src/libs/utils/tooltip/tooltip.cpp @@ -33,12 +33,11 @@ #include #include -#include -#include #include #include #include #include +#include #include using namespace Utils; @@ -171,10 +170,10 @@ void ToolTip::show( } } -void ToolTip::move(const QPoint &pos, QWidget *w) +void ToolTip::move(const QPoint &pos) { if (isVisible()) - instance()->placeTip(pos, w); + instance()->placeTip(pos); } bool ToolTip::pinToolTip(QWidget *w, QWidget *parent) @@ -232,9 +231,9 @@ bool ToolTip::acceptShow(const QVariant &content, void ToolTip::setUp(const QPoint &pos, QWidget *w, const QRect &rect) { - m_tip->configure(pos, w); + m_tip->configure(pos); - placeTip(pos, w); + placeTip(pos); setTipRect(w, rect); if (m_hideDelayTimer.isActive()) @@ -320,21 +319,15 @@ void ToolTip::showInternal(const QPoint &pos, const QVariant &content, int typeId, QWidget *w, const QVariant &contextHelp, const QRect &rect) { if (acceptShow(content, typeId, pos, w, contextHelp, rect)) { - QWidget *target = nullptr; - if (HostOsInfo::isWindowsHost()) - target = QApplication::desktop()->screen(Internal::screenNumber(pos, w)); - else - target = w; - switch (typeId) { case ColorContent: - m_tip = new ColorTip(target); + m_tip = new ColorTip(w); break; case TextContent: - m_tip = new TextTip(target); + m_tip = new TextTip(w); break; case WidgetContent: - m_tip = new WidgetTip(target); + m_tip = new WidgetTip(w); break; } m_tip->setObjectName("qcToolTip"); @@ -347,9 +340,9 @@ void ToolTip::showInternal(const QPoint &pos, const QVariant &content, emit shown(); } -void ToolTip::placeTip(const QPoint &pos, QWidget *w) +void ToolTip::placeTip(const QPoint &pos) { - QRect screen = Internal::screenGeometry(pos, w); + QRect screen = QGuiApplication::screenAt(pos)->availableGeometry(); QPoint p = pos; p += offsetFromPosition(); if (p.x() + m_tip->width() > screen.x() + screen.width()) diff --git a/src/libs/utils/tooltip/tooltip.h b/src/libs/utils/tooltip/tooltip.h index e2c5052f747..4c0c3de84f8 100644 --- a/src/libs/utils/tooltip/tooltip.h +++ b/src/libs/utils/tooltip/tooltip.h @@ -89,7 +89,7 @@ public: const QVariant &contextHelp = {}, const QRect &rect = QRect()); static void show(const QPoint &pos, QLayout *content, QWidget *w = nullptr, const QVariant &contextHelp = {}, const QRect &rect = QRect()); - static void move(const QPoint &pos, QWidget *w); + static void move(const QPoint &pos); static void hide(); static void hideImmediately(); static bool isVisible(); @@ -116,7 +116,7 @@ private: bool tipChanged(const QPoint &pos, const QVariant &content, int typeId, QWidget *w, const QVariant &contextHelp) const; void setTipRect(QWidget *w, const QRect &rect); - void placeTip(const QPoint &pos, QWidget *w); + void placeTip(const QPoint &pos); void showTip(); void hideTipWithDelay(); diff --git a/src/plugins/coreplugin/actionmanager/actionmanager.cpp b/src/plugins/coreplugin/actionmanager/actionmanager.cpp index 391cc077f41..d9e13404c3d 100644 --- a/src/plugins/coreplugin/actionmanager/actionmanager.cpp +++ b/src/plugins/coreplugin/actionmanager/actionmanager.cpp @@ -37,7 +37,6 @@ #include #include #include -#include #include #include #include @@ -457,9 +456,7 @@ void ActionManagerPrivate::showShortcutPopup(const QString &shortcut) if (!QApplication::topLevelWidgets().isEmpty()) { window = QApplication::topLevelWidgets().first(); } else { - QTC_ASSERT(QApplication::desktop(), return); - window = QApplication::desktop()->screen(); - QTC_ASSERT(window, return); + window = ICore::mainWindow(); } } diff --git a/src/plugins/debugger/debuggertooltipmanager.cpp b/src/plugins/debugger/debuggertooltipmanager.cpp index 39891041298..6accc57980e 100644 --- a/src/plugins/debugger/debuggertooltipmanager.cpp +++ b/src/plugins/debugger/debuggertooltipmanager.cpp @@ -1235,7 +1235,7 @@ void DebuggerToolTipManagerPrivate::slotTooltipOverrideRequested if (tooltip) { DEBUG("REUSING LOCALS TOOLTIP"); tooltip->context.mousePosition = point; - ToolTip::move(point, DebuggerMainWindow::instance()); + ToolTip::move(point); } else { DEBUG("CREATING LOCALS, WAITING..."); tooltip = new DebuggerToolTipHolder(context); @@ -1257,7 +1257,7 @@ void DebuggerToolTipManagerPrivate::slotTooltipOverrideRequested if (tooltip) { //tooltip->destroy(); tooltip->context.mousePosition = point; - ToolTip::move(point, DebuggerMainWindow::instance()); + ToolTip::move(point); DEBUG("UPDATING DELAYED."); } else { DEBUG("CREATING DELAYED."); diff --git a/src/plugins/texteditor/codeassist/functionhintproposalwidget.cpp b/src/plugins/texteditor/codeassist/functionhintproposalwidget.cpp index 292c46ccccf..149fba33fa3 100644 --- a/src/plugins/texteditor/codeassist/functionhintproposalwidget.cpp +++ b/src/plugins/texteditor/codeassist/functionhintproposalwidget.cpp @@ -37,7 +37,6 @@ #include #include #include -#include #include #include #include @@ -366,9 +365,7 @@ void FunctionHintProposalWidget::updateContent() void FunctionHintProposalWidget::updatePosition() { - const QDesktopWidget *desktop = QApplication::desktop(); - const int screenNumber = desktop->screenNumber(d->m_underlyingWidget); - auto widgetScreen = QGuiApplication::screens().value(screenNumber, QGuiApplication::primaryScreen()); + auto widgetScreen = d->m_underlyingWidget->screen(); const QRect &screen = Utils::HostOsInfo::isMacHost() ? widgetScreen->availableGeometry() : widgetScreen->geometry(); diff --git a/src/plugins/texteditor/codeassist/genericproposalwidget.cpp b/src/plugins/texteditor/codeassist/genericproposalwidget.cpp index a8b770b8156..623f83a5a80 100644 --- a/src/plugins/texteditor/codeassist/genericproposalwidget.cpp +++ b/src/plugins/texteditor/codeassist/genericproposalwidget.cpp @@ -47,9 +47,9 @@ #include #include #include +#include #include #include -#include #include #include @@ -143,10 +143,7 @@ public: // Workaround QTCREATORBUG-11653 void calculateMaximumWidth() { - const QDesktopWidget *desktopWidget = QApplication::desktop(); - const int desktopWidth = desktopWidget->isVirtualDesktop() - ? desktopWidget->width() - : desktopWidget->availableGeometry(desktopWidget->primaryScreen()).width(); + const int desktopWidth = screen()->availableGeometry().width(); const QMargins widgetMargins = contentsMargins(); const QMargins layoutMargins = layout()->contentsMargins(); const int margins = widgetMargins.left() + widgetMargins.right() @@ -531,10 +528,7 @@ void GenericProposalWidget::updatePositionAndSize() const int height = shint.height() + fw * 2; // Determine the position, keeping the popup on the screen - const QDesktopWidget *desktop = QApplication::desktop(); - const QRect screen = HostOsInfo::isMacHost() - ? desktop->availableGeometry(desktop->screenNumber(d->m_underlyingWidget)) - : desktop->screenGeometry(desktop->screenNumber(d->m_underlyingWidget)); + const QRect screen = d->m_underlyingWidget->screen()->availableGeometry(); QPoint pos = d->m_displayRect.bottomLeft(); pos.rx() -= 16 + fw; // Space for the icons