QNX: Add support for window states

Now QQuickView::showFullscreen() works as expected.
QQuickView has no fallback for platforms without window state support,
as opposed to QWidget.

Change-Id: I9c41fe563ea1f6d117eaebd3ea1db87465142b85
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
bb10
Thomas McGuire 2012-06-27 10:38:13 +02:00 committed by Qt by Nokia
parent c196f89b7e
commit 20e2fd074a
2 changed files with 42 additions and 1 deletions

View File

@ -72,7 +72,8 @@ QQnxWindow::QQnxWindow(QWindow *window, screen_context_t context)
#endif
m_screen(0),
m_parentWindow(0),
m_visible(true)
m_visible(true),
m_windowState(Qt::WindowNoState)
{
qWindowDebug() << Q_FUNC_INFO << "window =" << window << ", size =" << window->size();
int result;
@ -133,6 +134,10 @@ QQnxWindow::QQnxWindow(QWindow *window, screen_context_t context)
// Add window to plugin's window mapper
QQnxIntegration::addWindow(m_window, window);
// setWindowState() does not get called when the platform window hasn't been created yet, so
// make sure to apply the inital window state here
setWindowState(window->windowState());
}
QQnxWindow::~QQnxWindow()
@ -541,6 +546,39 @@ void QQnxWindow::requestActivateWindow()
gainedFocus();
}
Qt::WindowState QQnxWindow::setWindowState(Qt::WindowState state)
{
qWindowDebug() << Q_FUNC_INFO << "state =" << state;
// Prevent two calls with Qt::WindowFullScreen from changing m_unmaximizedGeometry
if (m_windowState == state)
return state;
switch (state) {
// WindowMinimized is not supported - navigator does not have an API to minimize a window
// WindowActive is not an accepted parameter according to the docs
case Qt::WindowMinimized:
case Qt::WindowActive:
return m_windowState;
case Qt::WindowMaximized:
case Qt::WindowFullScreen:
m_unmaximizedGeometry = geometry();
setGeometry(state == Qt::WindowMaximized ? m_screen->availableGeometry() : m_screen->geometry());
break;
case Qt::WindowNoState:
if (m_unmaximizedGeometry.isValid())
setGeometry(m_unmaximizedGeometry);
break;
}
m_windowState = state;
return state;
}
void QQnxWindow::gainedFocus()
{
qWindowDebug() << Q_FUNC_INFO << "window =" << window();

View File

@ -96,6 +96,7 @@ public:
void raise();
void lower();
void requestActivateWindow();
Qt::WindowState setWindowState(Qt::WindowState state);
void gainedFocus();
@ -137,6 +138,8 @@ private:
QList<QQnxWindow*> m_childWindows;
QQnxWindow *m_parentWindow;
bool m_visible;
QRect m_unmaximizedGeometry;
Qt::WindowState m_windowState;
};
QT_END_NAMESPACE