@@ -0,0 +1,61 @@
2+ * Copyright (C) 2015 Canonical, Ltd.
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
17+#include "activefocuslogger.h"
19+#include <QQuickWindow>
21+ActiveFocusLogger::ActiveFocusLogger(QQuickItem *parent)
24+ connect(this, &QQuickItem::windowChanged,
25+ this, &ActiveFocusLogger::setupFilterOnWindow);
28+void ActiveFocusLogger::setupFilterOnWindow(QQuickWindow *window)
30+ if (!m_window.isNull()) {
31+ disconnect(m_window.data(), nullptr, this, nullptr);
37+ QObject::connect(window, &QQuickWindow::activeFocusItemChanged,
38+ this, &ActiveFocusLogger::printActiveFocusInfo);
42+void ActiveFocusLogger::printActiveFocusInfo()
44+ if (!m_window || !isEnabled()) {
48+ qDebug() << "============== Active focus info START ================";
49+ if (m_window->activeFocusItem()) {
50+ qDebug() << m_window->activeFocusItem();
51+ qDebug() << "Ancestry:";
52+ QQuickItem *item = m_window->activeFocusItem()->parentItem();
53+ while (item != nullptr) {
54+ qDebug() << item << ", isFocusScope =" << item->isFocusScope();
55+ item = item->parentItem();
60+ qDebug() << "============== Active focus info END ================";