Add QPlatformScreen::windows() helper to return all windows on screen
Change-Id: Ib55b37b64ed0890ca777dfea8c4d702e267c34bf Reviewed-by: Gatis Paeglis <gatis.paeglis@qt.io>
This commit is contained in:
parent
be35539123
commit
e7063e6cc6
@ -103,6 +103,20 @@ QWindow *QPlatformScreen::topLevelAt(const QPoint & pos) const
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Return all windows residing on this screen.
|
||||||
|
*/
|
||||||
|
QWindowList QPlatformScreen::windows() const
|
||||||
|
{
|
||||||
|
QWindowList windows;
|
||||||
|
for (QWindow *window : QGuiApplication::allWindows()) {
|
||||||
|
if (platformScreenForWindow(window) != this)
|
||||||
|
continue;
|
||||||
|
windows.append(window);
|
||||||
|
}
|
||||||
|
return windows;
|
||||||
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Find the sibling screen corresponding to \a globalPos.
|
Find the sibling screen corresponding to \a globalPos.
|
||||||
|
|
||||||
@ -369,25 +383,17 @@ QPlatformCursor *QPlatformScreen::cursor() const
|
|||||||
*/
|
*/
|
||||||
void QPlatformScreen::resizeMaximizedWindows()
|
void QPlatformScreen::resizeMaximizedWindows()
|
||||||
{
|
{
|
||||||
QList<QWindow*> windows = QGuiApplication::allWindows();
|
|
||||||
|
|
||||||
// 'screen()' still has the old geometry info while 'this' has the new geometry info
|
// 'screen()' still has the old geometry info while 'this' has the new geometry info
|
||||||
const QRect oldGeometry = screen()->geometry();
|
const QRect oldGeometry = screen()->geometry();
|
||||||
const QRect oldAvailableGeometry = screen()->availableGeometry();
|
const QRect oldAvailableGeometry = screen()->availableGeometry();
|
||||||
const QRect newGeometry = deviceIndependentGeometry();
|
const QRect newGeometry = deviceIndependentGeometry();
|
||||||
const QRect newAvailableGeometry = QHighDpi::fromNative(availableGeometry(), QHighDpiScaling::factor(this), newGeometry.topLeft());
|
const QRect newAvailableGeometry = QHighDpi::fromNative(availableGeometry(), QHighDpiScaling::factor(this), newGeometry.topLeft());
|
||||||
|
|
||||||
// make sure maximized and fullscreen windows are updated
|
for (QWindow *w : windows()) {
|
||||||
for (int i = 0; i < windows.size(); ++i) {
|
|
||||||
QWindow *w = windows.at(i);
|
|
||||||
|
|
||||||
// Skip non-platform windows, e.g., offscreen windows.
|
// Skip non-platform windows, e.g., offscreen windows.
|
||||||
if (!w->handle())
|
if (!w->handle())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (platformScreenForWindow(w) != this)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (w->windowState() & Qt::WindowMaximized || w->geometry() == oldAvailableGeometry)
|
if (w->windowState() & Qt::WindowMaximized || w->geometry() == oldAvailableGeometry)
|
||||||
w->setGeometry(newAvailableGeometry);
|
w->setGeometry(newAvailableGeometry);
|
||||||
else if (w->windowState() & Qt::WindowFullScreen || w->geometry() == oldGeometry)
|
else if (w->windowState() & Qt::WindowFullScreen || w->geometry() == oldGeometry)
|
||||||
|
@ -123,6 +123,8 @@ public:
|
|||||||
virtual void setOrientationUpdateMask(Qt::ScreenOrientations mask);
|
virtual void setOrientationUpdateMask(Qt::ScreenOrientations mask);
|
||||||
|
|
||||||
virtual QWindow *topLevelAt(const QPoint &point) const;
|
virtual QWindow *topLevelAt(const QPoint &point) const;
|
||||||
|
QWindowList windows() const;
|
||||||
|
|
||||||
virtual QList<QPlatformScreen *> virtualSiblings() const;
|
virtual QList<QPlatformScreen *> virtualSiblings() const;
|
||||||
const QPlatformScreen *screenForPosition(const QPoint &point) const;
|
const QPlatformScreen *screenForPosition(const QPoint &point) const;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user