Advertise window (de)activation to Qt event system

The integration plugin now connects screens to the newly introduced
signals of the navigator event handler. The relevant screen then push a
corresponding event to the Qt event loop.

Change-Id: Ide6779bd1288c6560d113c77c60fc0ae30866d7f
Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
This commit is contained in:
Kevin Ottens 2012-04-30 17:12:42 +02:00 committed by Qt by Nokia
parent f74e5a0359
commit b6a4d69830
3 changed files with 34 additions and 0 deletions

View File

@ -448,6 +448,8 @@ void QQnxIntegration::createDisplays()
screen, SLOT(windowClosed(void *)));
QObject::connect(m_navigatorEventHandler, SIGNAL(rotationChanged(int)), screen, SLOT(setRotation(int)));
QObject::connect(m_navigatorEventHandler, SIGNAL(windowGroupActivated(QByteArray)), screen, SLOT(activateWindowGroup(QByteArray)));
QObject::connect(m_navigatorEventHandler, SIGNAL(windowGroupDeactivated(QByteArray)), screen, SLOT(deactivateWindowGroup(QByteArray)));
}
}

View File

@ -348,4 +348,34 @@ void QQnxScreen::windowClosed(void *window)
removeOverlayWindow(windowHandle);
}
void QQnxScreen::activateWindowGroup(const QByteArray &id)
{
#if defined(QQNXSCREEN_DEBUG)
qDebug() << Q_FUNC_INFO;
#endif
if (!rootWindow() || id != rootWindow()->groupName())
return;
if (!m_childWindows.isEmpty()) {
// We're picking up the last window of the list here
// because this list is ordered by stacking order.
// Last window is effectively the one on top.
QWindow * const window = m_childWindows.last()->window();
QWindowSystemInterface::handleWindowActivated(window);
}
}
void QQnxScreen::deactivateWindowGroup(const QByteArray &id)
{
#if defined(QQNXSCREEN_DEBUG)
qDebug() << Q_FUNC_INFO;
#endif
if (!rootWindow() || id != rootWindow()->groupName())
return;
QWindowSystemInterface::handleWindowActivated(0);
}
QT_END_NAMESPACE

View File

@ -94,6 +94,8 @@ public Q_SLOTS:
void setRotation(int rotation);
void newWindowCreated(void *window);
void windowClosed(void *window);
void activateWindowGroup(const QByteArray &id);
void deactivateWindowGroup(const QByteArray &id);
private Q_SLOTS:
void keyboardHeightChanged(int height);