Add support for QWindow::setOrientation on Harmattan

Set the _MEEGOTOUCH_ORIENTATION_ANGLE property on the window, just like
Qt Components for MeeGo and MeegoTouch itself.

Change-Id: I0b9adf4550593678bbcba89a2d4f1f65c1f4bd20
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
bb10
Simon Hausmann 2012-01-17 10:03:32 +01:00 committed by Qt by Nokia
parent bc02ef882b
commit 14e237816d
5 changed files with 36 additions and 5 deletions

View File

@ -909,6 +909,9 @@ static const char * xcb_atomnames = {
"Abs MT Pressure\0"
"Abs MT Tracking ID\0"
"Max Contacts\0"
#if XCB_USE_MAEMO_WINDOW_PROPERTIES
"_MEEGOTOUCH_ORIENTATION_ANGLE\0"
#endif
};
xcb_atom_t QXcbConnection::atom(QXcbAtom::Atom atom)

View File

@ -243,6 +243,10 @@ namespace QXcbAtom {
AbsMTTrackingID,
MaxContacts,
#if XCB_USE_MAEMO_WINDOW_PROPERTIES
MeegoTouchOrientationAngle,
#endif
NPredefinedAtoms,
_QT_SETTINGS_TIMESTAMP = NPredefinedAtoms,

View File

@ -1148,6 +1148,23 @@ void QXcbWindow::requestActivateWindow()
connection()->sync();
}
#if XCB_USE_MAEMO_WINDOW_PROPERTIES
void QXcbWindow::setOrientation(Qt::ScreenOrientation orientation)
{
int angle = 0;
switch (orientation) {
case Qt::PortraitOrientation: angle = 270; break;
case Qt::LandscapeOrientation: angle = 0; break;
case Qt::InvertedPortraitOrientation: angle = 90; break;
case Qt::InvertedLandscapeOrientation: angle = 180; break;
case Qt::UnknownOrientation: break;
}
Q_XCB_CALL(xcb_change_property(xcb_connection(), XCB_PROP_MODE_REPLACE, m_window,
atom(QXcbAtom::MeegoTouchOrientationAngle), XCB_ATOM_CARDINAL, 32,
1, &angle));
}
#endif
QSurfaceFormat QXcbWindow::format() const
{
// ### return actual format

View File

@ -79,6 +79,10 @@ public:
void requestActivateWindow();
#if XCB_USE_MAEMO_WINDOW_PROPERTIES
void setOrientation(Qt::ScreenOrientation orientation);
#endif
bool setKeyboardGrabEnabled(bool grab);
bool setMouseGrabEnabled(bool grab);

View File

@ -46,11 +46,14 @@ contains(QT_CONFIG, xcb-xlib) {
DEFINES += XCB_USE_XLIB
LIBS += -lX11 -lX11-xcb
linux-g++-maemo:contains(QT_CONFIG, xinput2) {
# XInput2 support for Harmattan.
DEFINES += XCB_USE_XINPUT2_MAEMO
SOURCES += qxcbconnection_maemo.cpp
LIBS += -lXi
linux-g++-maemo {
contains(QT_CONFIG, xinput2) {
# XInput2 support for Harmattan.
DEFINES += XCB_USE_XINPUT2_MAEMO
SOURCES += qxcbconnection_maemo.cpp
LIBS += -lXi
}
DEFINES += XCB_USE_MAEMO_WINDOW_PROPERTIES
}
}