summaryrefslogtreecommitdiffstats
path: root/src/gui/kernel/qguiapplication.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/kernel/qguiapplication.cpp')
-rw-r--r--src/gui/kernel/qguiapplication.cpp27
1 files changed, 18 insertions, 9 deletions
diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp
index ad01a72a45..a54dab6398 100644
--- a/src/gui/kernel/qguiapplication.cpp
+++ b/src/gui/kernel/qguiapplication.cpp
@@ -52,6 +52,7 @@
#include <QtCore/qmutex.h>
#include <QtDebug>
#include <qpalette.h>
+#include <qscreen.h>
#include <QtGui/QPlatformIntegration>
#include <QtGui/QGenericPluginFactory>
@@ -103,6 +104,8 @@ QGuiApplicationPrivate *QGuiApplicationPrivate::self = 0;
QClipboard *QGuiApplicationPrivate::qt_clipboard = 0;
#endif
+QList<QScreen *> QGuiApplicationPrivate::screen_list;
+
QWindowList QGuiApplicationPrivate::window_list;
QWindow *QGuiApplicationPrivate::active_window = 0;
@@ -179,21 +182,27 @@ QWindowList QGuiApplication::topLevelWindows()
return QGuiApplicationPrivate::window_list;
}
-QWindow *QGuiApplication::topLevelAt(const QPoint &pos)
+QScreen *QGuiApplication::primaryScreen()
{
- QPlatformIntegration *pi = QGuiApplicationPrivate::platformIntegration();
+ if (QGuiApplicationPrivate::screen_list.isEmpty())
+ return 0;
+ return QGuiApplicationPrivate::screen_list.at(0);
+}
- QList<QPlatformScreen *> screens = pi->screens();
- QList<QPlatformScreen *>::const_iterator screen = screens.constBegin();
- QList<QPlatformScreen *>::const_iterator end = screens.constEnd();
+QList<QScreen *> QGuiApplication::screens()
+{
+ return QGuiApplicationPrivate::screen_list;
+}
- // The first screen in a virtual environment should know about all top levels
- if (pi->isVirtualDesktop())
- return (*screen)->topLevelAt(pos);
+QWindow *QGuiApplication::topLevelAt(const QPoint &pos)
+{
+ QList<QScreen *> screens = QGuiApplication::screens();
+ QList<QScreen *>::const_iterator screen = screens.constBegin();
+ QList<QScreen *>::const_iterator end = screens.constEnd();
while (screen != end) {
if ((*screen)->geometry().contains(pos))
- return (*screen)->topLevelAt(pos);
+ return (*screen)->handle()->topLevelAt(pos);
++screen;
}
return 0;