diff options
author | Samuel Rødal <samuel.rodal@nokia.com> | 2012-01-13 10:31:11 +0100 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-01-24 15:38:48 +0100 |
commit | b39df8bf92a530783144dbcf5cae939742ff2d23 (patch) | |
tree | 0560985d33f59a48693acadbdfbb59b328131499 /src/gui/kernel/qguiapplication.cpp | |
parent | b0a0403daf81e82ea732aa91ec92cf94553a7935 (diff) |
Made window orientation API more flexible.
Previously we only had QWindow::setOrientation() which was a hint about
the orientation the window's contents were rendered in.
However, it's necessary to separate between the orientation
corresponding to the window buffer layout and orientation of the
contents. A game for example might typically want to use a landscape
buffer even on a portrait device. Thus, we replace
QWindow::orientation() with QWindow::reportContentOrientationChange() and
QWindow::requestWindowOrientation().
Change-Id: I1f07362192daf36c45519cb05b43ac352f1945b5
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
Diffstat (limited to 'src/gui/kernel/qguiapplication.cpp')
-rw-r--r-- | src/gui/kernel/qguiapplication.cpp | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp index 6a8f8582be..b3adcfcbaf 100644 --- a/src/gui/kernel/qguiapplication.cpp +++ b/src/gui/kernel/qguiapplication.cpp @@ -1078,11 +1078,16 @@ void QGuiApplicationPrivate::reportScreenOrientationChange(QWindowSystemInterfac return; QScreen *s = e->screen.data(); - s->d_func()->currentOrientation = e->orientation; + s->d_func()->orientation = e->orientation; - emit s->currentOrientationChanged(s->currentOrientation()); + reportScreenOrientationChange(s); +} + +void QGuiApplicationPrivate::reportScreenOrientationChange(QScreen *s) +{ + emit s->orientationChanged(s->orientation()); - QScreenOrientationChangeEvent event(s, s->currentOrientation()); + QScreenOrientationChangeEvent event(s, s->orientation()); QCoreApplication::sendEvent(QCoreApplication::instance(), &event); } @@ -1098,6 +1103,10 @@ void QGuiApplicationPrivate::reportGeometryChange(QWindowSystemInterfacePrivate: QScreen *s = e->screen.data(); s->d_func()->geometry = e->geometry; + Qt::ScreenOrientation primaryOrientation = s->primaryOrientation(); + Qt::ScreenOrientation orientation = s->orientation(); + s->d_func()->updatePrimaryOrientation(); + emit s->sizeChanged(s->size()); emit s->geometryChanged(s->geometry()); emit s->physicalDotsPerInchXChanged(s->physicalDotsPerInchX()); @@ -1105,6 +1114,12 @@ void QGuiApplicationPrivate::reportGeometryChange(QWindowSystemInterfacePrivate: emit s->physicalDotsPerInchChanged(s->physicalDotsPerInch()); emit s->availableSizeChanged(s->availableSize()); emit s->availableGeometryChanged(s->availableGeometry()); + + if (s->primaryOrientation() != primaryOrientation) + emit s->primaryOrientationChanged(s->primaryOrientation()); + + if (s->orientation() != orientation) + reportScreenOrientationChange(s); } void QGuiApplicationPrivate::reportAvailableGeometryChange( |