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
parent
c196f89b7e
commit
20e2fd074a
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue