diff options
-rw-r--r-- | src/corelib/scene/mscenemanager.cpp | 20 | ||||
-rw-r--r-- | src/corelib/scene/mscenemanager.h | 1 | ||||
-rw-r--r-- | src/corelib/scene/mscenemanager_p.h | 1 |
3 files changed, 22 insertions, 0 deletions
diff --git a/src/corelib/scene/mscenemanager.cpp b/src/corelib/scene/mscenemanager.cpp index abd7260c..9e3ba6b2 100644 --- a/src/corelib/scene/mscenemanager.cpp +++ b/src/corelib/scene/mscenemanager.cpp @@ -187,6 +187,7 @@ void MSceneManagerPrivate::createOrientationAnimation() SLOT(_q_applySceneWindowTransitionsQueuedDueToOrientationAnimation())); q->connect(orientationAnimation, SIGNAL(finished()), SLOT(_q_triggerAsyncPendingOrientationChange())); q->connect(orientationAnimation, SIGNAL(finished()), SLOT(_q_updateOnDisplayVisibility())); + q->connect(orientationAnimation, SIGNAL(finished()), SLOT(_q_setOrientationAngleForWindow())); } void MSceneManagerPrivate::initRelocator() @@ -971,6 +972,25 @@ void MSceneManagerPrivate::setOrientationAngleWithoutAnimation(M::OrientationAng _q_emitOrientationChangeFinished(); _q_updateOnDisplayVisibility(); + _q_setOrientationAngleForWindow(); +} + +//we need to update MWindow orienentation angle +void MSceneManagerPrivate::_q_setOrientationAngleForWindow() +{ + Q_Q(MSceneManager); + + foreach(QGraphicsView *view, q->scene()->views()) { + if(!view) + continue; + MWindow* win = qobject_cast<MWindow *>(view); + if(win && win->d_func()->angle !=angle) { + win->d_func()->angle = angle; +#ifdef Q_WS_X11 + win->d_func()->setX11OrientationAngleProperty(angle); +#endif + } + } } bool MSceneManagerPrivate::isOnDisplay() diff --git a/src/corelib/scene/mscenemanager.h b/src/corelib/scene/mscenemanager.h index 1e87475b..16aa2e64 100644 --- a/src/corelib/scene/mscenemanager.h +++ b/src/corelib/scene/mscenemanager.h @@ -331,6 +331,7 @@ private: Q_PRIVATE_SLOT(d_func(), void _q_undoSceneWindowDislocation(MSceneWindow *sceneWindow)) Q_PRIVATE_SLOT(d_func(), void _q_updateRootElementsPositions()) Q_PRIVATE_SLOT(d_func(), void _q_updateOnDisplayVisibility()) + Q_PRIVATE_SLOT(d_func(), void _q_setOrientationAngleForWindow()) #ifdef Q_WS_X11 Q_PRIVATE_SLOT(d_func(), void _q_updateDecoratorButtonsProperty()) #endif diff --git a/src/corelib/scene/mscenemanager_p.h b/src/corelib/scene/mscenemanager_p.h index ad64eede..9a89507f 100644 --- a/src/corelib/scene/mscenemanager_p.h +++ b/src/corelib/scene/mscenemanager_p.h @@ -211,6 +211,7 @@ public: void _q_applyPendingOrientationChange(); void _q_updateRootElementsPositions(); + void _q_setOrientationAngleForWindow(); #ifdef Q_WS_X11 void _q_updateDecoratorButtonsProperty(); |