aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorShawn Rutledge <shawn.rutledge@digia.com>2012-10-15 17:18:46 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2012-10-16 22:23:02 +0200
commitb495a61c6b0c79d20d98428a34750ad30839e7e4 (patch)
treee565706578ae27a7c83fd1e2f15890e0b0e9784c /src
parent4578a6fcba8b590a4a9b75559f7fcb80c3037c80 (diff)
QQuickScreen attached obj handles screenChanged and geometryChanged
sizeChanged is replaced with geometryChanged. Given a Window, it also needs to connect to the Window's screenChanged signal. The result is that if the screen is changed after the QQuickView is created, the Screen attached object will be updated. Change-Id: I64473dd960376b861eb50e3e5a1a296d0030e766 Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
Diffstat (limited to 'src')
-rw-r--r--src/quick/items/qquickscreen.cpp25
-rw-r--r--src/quick/items/qquickscreen_p.h4
2 files changed, 22 insertions, 7 deletions
diff --git a/src/quick/items/qquickscreen.cpp b/src/quick/items/qquickscreen.cpp
index faada2d5b1..139cd72168 100644
--- a/src/quick/items/qquickscreen.cpp
+++ b/src/quick/items/qquickscreen.cpp
@@ -102,7 +102,8 @@ QT_BEGIN_NAMESPACE
QQuickScreenAttached::QQuickScreenAttached(QObject* attachee)
: QObject(attachee)
- , m_screen(0)
+ , m_screen(NULL)
+ , m_window(NULL)
{
m_attachee = qobject_cast<QQuickItem*>(attachee);
@@ -149,17 +150,27 @@ int QQuickScreenAttached::angleBetween(int a, int b)
return m_screen->angleBetween((Qt::ScreenOrientation)a,(Qt::ScreenOrientation)b);
}
-void QQuickScreenAttached::windowChanged(QQuickWindow* c)//Called by QQuickItemPrivate::initWindow
+void QQuickScreenAttached::windowChanged(QQuickWindow* c)
{
- QScreen* screen = c ? c->screen() : 0;
+ if (m_window)
+ disconnect(m_window, SIGNAL(screenChanged(QScreen*)), this, SLOT(screenChanged(QScreen*)));
+ m_window = c;
+ screenChanged(c ? c->screen() : NULL);
+ if (c)
+ connect(c, SIGNAL(screenChanged(QScreen*)), this, SLOT(screenChanged(QScreen*)));
+}
+
+void QQuickScreenAttached::screenChanged(QScreen *screen)
+{
+ //qDebug() << "QQuickScreenAttached::screenChanged" << (screen ? screen->name() : QString::fromLatin1("null"));
if (screen != m_screen) {
QScreen* oldScreen = m_screen;
m_screen = screen;
if (oldScreen) {
- disconnect(oldScreen, SIGNAL(sizeChanged(QSize)),
+ disconnect(oldScreen, SIGNAL(geometryChanged(QRect)),
this, SIGNAL(widthChanged()));
- disconnect(oldScreen, SIGNAL(sizeChanged(QSize)),
+ disconnect(oldScreen, SIGNAL(geometryChanged(QRect)),
this, SIGNAL(heightChanged()));
disconnect(oldScreen, SIGNAL(orientationChanged(Qt::ScreenOrientation)),
this, SIGNAL(orientationChanged()));
@@ -181,9 +192,9 @@ void QQuickScreenAttached::windowChanged(QQuickWindow* c)//Called by QQuickItemP
emit primaryOrientationChanged();
- connect(screen, SIGNAL(sizeChanged(QSize)),
+ connect(screen, SIGNAL(geometryChanged(QRect)),
this, SIGNAL(widthChanged()));
- connect(screen, SIGNAL(sizeChanged(QSize)),
+ connect(screen, SIGNAL(geometryChanged(QRect)),
this, SIGNAL(heightChanged()));
connect(screen, SIGNAL(orientationChanged(Qt::ScreenOrientation)),
this, SIGNAL(orientationChanged()));
diff --git a/src/quick/items/qquickscreen_p.h b/src/quick/items/qquickscreen_p.h
index 55ac9796a6..46ea7ee137 100644
--- a/src/quick/items/qquickscreen_p.h
+++ b/src/quick/items/qquickscreen_p.h
@@ -84,8 +84,12 @@ Q_SIGNALS:
void primaryOrientationChanged();
void orientationChanged();
+protected slots:
+ void screenChanged(QScreen*);
+
private:
QScreen* m_screen;
+ QQuickWindow* m_window;
QQuickItem* m_attachee;
};