summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/windows/qwindowsscreen.cpp
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@theqtcompany.com>2015-12-02 23:33:06 +0100
committerLiang Qi <liang.qi@theqtcompany.com>2015-12-02 23:33:06 +0100
commit72f5867f144cec8fc7848cbcc772683fe845652d (patch)
tree7513af27b59332bf111f406d304977adc8c8612e /src/plugins/platforms/windows/qwindowsscreen.cpp
parent13777097118c496391d4b9656b95097ac25e4a40 (diff)
parentbf0af8b5a24de7e595929a64948a3548936aaaee (diff)
Merge remote-tracking branch 'origin/5.6' into dev
Conflicts: src/corelib/kernel/qcoreapplication.cpp src/corelib/kernel/qeventdispatcher_blackberry.cpp src/network/bearer/qnetworkconfiguration.cpp src/plugins/bearer/blackberry/qbbengine.cpp src/plugins/platforms/android/androidjnimain.cpp src/plugins/platforms/android/qandroidplatformtheme.cpp src/plugins/platforms/qnx/qqnxbpseventfilter.cpp src/plugins/platforms/qnx/qqnxfiledialoghelper_bb10.cpp src/plugins/platforms/qnx/qqnxinputcontext_imf.cpp src/plugins/platforms/qnx/qqnxintegration.cpp src/plugins/platforms/qnx/qqnxnavigatorbps.cpp src/plugins/platforms/qnx/qqnxvirtualkeyboardbps.cpp src/plugins/platforms/qnx/qqnxwindow.cpp src/widgets/kernel/qwidgetwindow.cpp src/widgets/styles/qwindowsvistastyle.cpp src/widgets/styles/qwindowsxpstyle.cpp src/widgets/widgets/qtoolbararealayout.cpp tests/auto/corelib/global/qflags/qflags.pro tests/auto/corelib/itemmodels/qitemmodel/modelstotest.cpp tests/auto/corelib/tools/qversionnumber/qversionnumber.pro tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp Change-Id: I37be88c6c185bb85404823353e027a0a6acdbce4
Diffstat (limited to 'src/plugins/platforms/windows/qwindowsscreen.cpp')
-rw-r--r--src/plugins/platforms/windows/qwindowsscreen.cpp68
1 files changed, 68 insertions, 0 deletions
diff --git a/src/plugins/platforms/windows/qwindowsscreen.cpp b/src/plugins/platforms/windows/qwindowsscreen.cpp
index e69665e4a9..02696c87cd 100644
--- a/src/plugins/platforms/windows/qwindowsscreen.cpp
+++ b/src/plugins/platforms/windows/qwindowsscreen.cpp
@@ -325,6 +325,74 @@ void QWindowsScreen::handleChanges(const QWindowsScreenData &newData)
}
}
+enum OrientationPreference // matching Win32 API ORIENTATION_PREFERENCE
+#if defined(Q_COMPILER_CLASS_ENUM) || defined(Q_CC_MSVC)
+ : DWORD
+#endif
+{
+ orientationPreferenceNone = 0,
+ orientationPreferenceLandscape = 0x1,
+ orientationPreferencePortrait = 0x2,
+ orientationPreferenceLandscapeFlipped = 0x4,
+ orientationPreferencePortraitFlipped = 0x8
+};
+
+bool QWindowsScreen::setOrientationPreference(Qt::ScreenOrientation o)
+{
+ bool result = false;
+#ifndef Q_OS_WINCE
+ if (QWindowsContext::user32dll.setDisplayAutoRotationPreferences) {
+ DWORD orientationPreference = 0;
+ switch (o) {
+ case Qt::PrimaryOrientation:
+ orientationPreference = orientationPreferenceNone;
+ break;
+ case Qt::PortraitOrientation:
+ orientationPreference = orientationPreferencePortrait;
+ break;
+ case Qt::LandscapeOrientation:
+ orientationPreference = orientationPreferenceLandscape;
+ break;
+ case Qt::InvertedPortraitOrientation:
+ orientationPreference = orientationPreferencePortraitFlipped;
+ break;
+ case Qt::InvertedLandscapeOrientation:
+ orientationPreference = orientationPreferenceLandscapeFlipped;
+ break;
+ }
+ result = QWindowsContext::user32dll.setDisplayAutoRotationPreferences(orientationPreference);
+ }
+#endif // !Q_OS_WINCE
+ return result;
+}
+
+Qt::ScreenOrientation QWindowsScreen::orientationPreference()
+{
+ Qt::ScreenOrientation result = Qt::PrimaryOrientation;
+#ifndef Q_OS_WINCE
+ if (QWindowsContext::user32dll.getDisplayAutoRotationPreferences) {
+ DWORD orientationPreference = 0;
+ if (QWindowsContext::user32dll.getDisplayAutoRotationPreferences(&orientationPreference)) {
+ switch (orientationPreference) {
+ case orientationPreferenceLandscape:
+ result = Qt::LandscapeOrientation;
+ break;
+ case orientationPreferencePortrait:
+ result = Qt::PortraitOrientation;
+ break;
+ case orientationPreferenceLandscapeFlipped:
+ result = Qt::InvertedLandscapeOrientation;
+ break;
+ case orientationPreferencePortraitFlipped:
+ result = Qt::InvertedPortraitOrientation;
+ break;
+ }
+ }
+ }
+#endif // !Q_OS_WINCE
+ return result;
+}
+
/*!
\brief Queries ClearType settings to check the pixel layout
*/