@@ -30,6 +30,7 @@ HomeKeyWatcher::HomeKeyWatcher(UnityUtil::AbstractTimer *timer,
3030 QQuickItem *parent)
3131 : QQuickItem(parent)
3232 , m_windowBeingTouched(false)
33+ , m_homeKeyPressed(false)
3334 , m_windowLastTouchedTimer(elapsedTimer)
3435 , m_activationTimer(timer)
3536{
@@ -66,12 +67,21 @@ void HomeKeyWatcher::update(QEvent *event)
6667 if (event->type() == QEvent::KeyPress) {
6768 QKeyEvent *keyEvent = static_cast<QKeyEvent*>(event);
6869
70+ m_homeKeyPressed = true;
71+
6972 if (keyEvent->key() == Qt::Key_Super_L && !keyEvent->isAutoRepeat()
7073 && !m_windowBeingTouched
7174 && m_windowLastTouchedTimer->elapsed() >= msecsWithoutTouches) {
7275 m_activationTimer->start();
7376 }
7477
78+ } else if (event->type() == QEvent::KeyRelease) {
79+ QKeyEvent *keyEvent = static_cast<QKeyEvent*>(event);
80+
81+ if (keyEvent->key() == Qt::Key_Super_L) {
82+ m_homeKeyPressed = false;
83+ }
84+
7585 } else if (event->type() == QEvent::TouchBegin) {
7686
7787 m_activationTimer->stop();
@@ -99,7 +109,8 @@ void HomeKeyWatcher::setupFilterOnWindow(QQuickWindow *window)
99109
100110void HomeKeyWatcher::emitActivatedIfNoTouchesAround()
101111{
102− if (!m_windowBeingTouched && (m_windowLastTouchedTimer->elapsed() > msecsWithoutTouches)) {
112+ if (!m_homeKeyPressed && !m_windowBeingTouched &&
113+ (m_windowLastTouchedTimer->elapsed() > msecsWithoutTouches)) {
103114 Q_EMIT activated();
104115 }
105116}