Revert "Remove deprecated screen maintenance functions in QPlatformIntegration"
This reverts commit 7a64ffb773.
This change landed in 5.13 too early, so there is no baseline with both APIs in
dev. This will be reverted later when the fixes for leaf modules landed.
Task-number: QTBUG-74816
Change-Id: Ie5ee41fbf6be53b8fcb4289ac1ec3974e5bf6e42
Reviewed-by: Jesus Fernandez <Jesus.Fernandez@qt.io>
bb10
parent
6ed2ea86db
commit
300940a6c9
|
|
@ -462,6 +462,44 @@ QList<int> QPlatformIntegration::possibleKeys(const QKeyEvent *) const
|
|||
return QList<int>();
|
||||
}
|
||||
|
||||
/*!
|
||||
\deprecated Use QWindowSystemInterface::handleScreenAdded instead.
|
||||
*/
|
||||
void QPlatformIntegration::screenAdded(QPlatformScreen *ps, bool isPrimary)
|
||||
{
|
||||
QWindowSystemInterface::handleScreenAdded(ps, isPrimary);
|
||||
}
|
||||
|
||||
/*!
|
||||
\deprecated Use QWindowSystemInterface::handleScreenRemoved instead.
|
||||
*/
|
||||
void QPlatformIntegration::removeScreen(QScreen *screen)
|
||||
{
|
||||
const bool wasPrimary = (!QGuiApplicationPrivate::screen_list.isEmpty() && QGuiApplicationPrivate::screen_list.at(0) == screen);
|
||||
QGuiApplicationPrivate::screen_list.removeOne(screen);
|
||||
|
||||
QGuiApplicationPrivate::resetCachedDevicePixelRatio();
|
||||
|
||||
if (wasPrimary && qGuiApp && !QGuiApplicationPrivate::screen_list.isEmpty())
|
||||
emit qGuiApp->primaryScreenChanged(QGuiApplicationPrivate::screen_list.at(0));
|
||||
}
|
||||
|
||||
/*!
|
||||
\deprecated Use QWindowSystemInterface::handleScreenRemoved instead.
|
||||
*/
|
||||
void QPlatformIntegration::destroyScreen(QPlatformScreen *platformScreen)
|
||||
{
|
||||
QWindowSystemInterface::handleScreenRemoved(platformScreen);
|
||||
}
|
||||
|
||||
/*!
|
||||
\deprecated Use QWindowSystemInterface::handlePrimaryScreenChanged instead.
|
||||
*/
|
||||
void QPlatformIntegration::setPrimaryScreen(QPlatformScreen *newPrimary)
|
||||
{
|
||||
QWindowSystemInterface::handlePrimaryScreenChanged(newPrimary);
|
||||
}
|
||||
|
||||
QStringList QPlatformIntegration::themeNames() const
|
||||
{
|
||||
return QStringList();
|
||||
|
|
|
|||
|
|
@ -192,6 +192,10 @@ public:
|
|||
#endif
|
||||
virtual void setApplicationIcon(const QIcon &icon) const;
|
||||
|
||||
#if QT_DEPRECATED_SINCE(5, 12)
|
||||
QT_DEPRECATED_X("Use QWindowSystemInterface::handleScreenRemoved") void removeScreen(QScreen *screen);
|
||||
#endif
|
||||
|
||||
virtual void beep() const;
|
||||
|
||||
#if QT_CONFIG(vulkan) || defined(Q_CLANG_QDOC)
|
||||
|
|
@ -200,6 +204,12 @@ public:
|
|||
|
||||
protected:
|
||||
QPlatformIntegration() = default;
|
||||
|
||||
#if QT_DEPRECATED_SINCE(5, 12)
|
||||
QT_DEPRECATED_X("Use QWindowSystemInterface::handleScreenAdded") void screenAdded(QPlatformScreen *screen, bool isPrimary = false);
|
||||
QT_DEPRECATED_X("Use QWindowSystemInterface::handleScreenRemoved") void destroyScreen(QPlatformScreen *screen);
|
||||
QT_DEPRECATED_X("Use QWindowSystemInterface::handlePrimaryScreenChanged") void setPrimaryScreen(QPlatformScreen *newPrimary);
|
||||
#endif
|
||||
};
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
|
|
|||
|
|
@ -62,6 +62,10 @@ QPlatformScreen::~QPlatformScreen()
|
|||
Q_D(QPlatformScreen);
|
||||
if (d->screen) {
|
||||
qWarning("Manually deleting a QPlatformScreen. Call QWindowSystemInterface::handleScreenRemoved instead.");
|
||||
QT_WARNING_PUSH
|
||||
QT_WARNING_DISABLE_DEPRECATED
|
||||
QGuiApplicationPrivate::platformIntegration()->removeScreen(d->screen);
|
||||
QT_WARNING_POP
|
||||
delete d->screen;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -106,18 +106,9 @@ void QScreenPrivate::setPlatformScreen(QPlatformScreen *screen)
|
|||
*/
|
||||
QScreen::~QScreen()
|
||||
{
|
||||
// Remove screen
|
||||
const bool wasPrimary = QGuiApplication::primaryScreen() == this;
|
||||
QGuiApplicationPrivate::screen_list.removeOne(this);
|
||||
QGuiApplicationPrivate::resetCachedDevicePixelRatio();
|
||||
|
||||
if (!qGuiApp)
|
||||
if (!qApp)
|
||||
return;
|
||||
|
||||
QScreen *newPrimaryScreen = QGuiApplication::primaryScreen();
|
||||
if (wasPrimary && newPrimaryScreen)
|
||||
emit qGuiApp->primaryScreenChanged(newPrimaryScreen);
|
||||
|
||||
// Allow clients to manage windows that are affected by the screen going
|
||||
// away, before we fall back to moving them to the primary screen.
|
||||
emit qApp->screenRemoved(this);
|
||||
|
|
@ -125,8 +116,11 @@ QScreen::~QScreen()
|
|||
if (QGuiApplication::closingDown())
|
||||
return;
|
||||
|
||||
bool movingFromVirtualSibling = newPrimaryScreen
|
||||
&& newPrimaryScreen->handle()->virtualSiblings().contains(handle());
|
||||
QScreen *primaryScreen = QGuiApplication::primaryScreen();
|
||||
if (this == primaryScreen)
|
||||
return;
|
||||
|
||||
bool movingFromVirtualSibling = primaryScreen && primaryScreen->handle()->virtualSiblings().contains(handle());
|
||||
|
||||
// Move any leftover windows to the primary screen
|
||||
const auto allWindows = QGuiApplication::allWindows();
|
||||
|
|
@ -135,7 +129,7 @@ QScreen::~QScreen()
|
|||
continue;
|
||||
|
||||
const bool wasVisible = window->isVisible();
|
||||
window->setScreen(newPrimaryScreen);
|
||||
window->setScreen(primaryScreen);
|
||||
|
||||
// Re-show window if moved from a virtual sibling screen. Otherwise
|
||||
// leave it up to the application developer to show the window.
|
||||
|
|
|
|||
|
|
@ -818,6 +818,11 @@ void QWindowSystemInterface::handleScreenAdded(QPlatformScreen *ps, bool isPrima
|
|||
*/
|
||||
void QWindowSystemInterface::handleScreenRemoved(QPlatformScreen *platformScreen)
|
||||
{
|
||||
QT_WARNING_PUSH
|
||||
QT_WARNING_DISABLE_DEPRECATED
|
||||
QGuiApplicationPrivate::platformIntegration()->removeScreen(platformScreen->screen());
|
||||
QT_WARNING_POP
|
||||
|
||||
// Important to keep this order since the QSceen doesn't own the platform screen
|
||||
delete platformScreen->screen();
|
||||
delete platformScreen;
|
||||
|
|
|
|||
Loading…
Reference in New Issue