/* KWin - the KDE window manager This file is part of the KDE project. SPDX-FileCopyrightText: 2012 Martin Gräßlin SPDX-License-Identifier: GPL-2.0-or-later */ #include "mock_tabboxhandler.h" #include "mock_tabboxclient.h" namespace KWin { MockTabBoxHandler::MockTabBoxHandler(QObject *parent) : TabBoxHandler(parent) { } MockTabBoxHandler::~MockTabBoxHandler() { } void MockTabBoxHandler::grabbedKeyEvent(QKeyEvent *event) const { } std::weak_ptr MockTabBoxHandler::activeClient() const { return m_activeClient; } void MockTabBoxHandler::setActiveClient(const std::weak_ptr &client) { m_activeClient = client; } std::weak_ptr MockTabBoxHandler::clientToAddToList(TabBox::TabBoxClient *client, int desktop) const { QList>::const_iterator it = m_windows.constBegin(); for (; it != m_windows.constEnd(); ++it) { if ((*it).get() == client) { return std::weak_ptr(*it); } } return std::weak_ptr(); } std::weak_ptr MockTabBoxHandler::nextClientFocusChain(TabBox::TabBoxClient *client) const { QList>::const_iterator it = m_windows.constBegin(); for (; it != m_windows.constEnd(); ++it) { if ((*it).get() == client) { ++it; if (it == m_windows.constEnd()) { return std::weak_ptr(m_windows.first()); } else { return std::weak_ptr(*it); } } } if (!m_windows.isEmpty()) { return std::weak_ptr(m_windows.last()); } return std::weak_ptr(); } std::weak_ptr MockTabBoxHandler::firstClientFocusChain() const { if (m_windows.isEmpty()) { return std::weak_ptr(); } return m_windows.first(); } bool MockTabBoxHandler::isInFocusChain(TabBox::TabBoxClient *client) const { if (!client) { return false; } QList>::const_iterator it = m_windows.constBegin(); for (; it != m_windows.constEnd(); ++it) { if ((*it).get() == client) { return true; } } return false; } std::weak_ptr MockTabBoxHandler::createMockWindow(const QString &caption) { std::shared_ptr client(new MockTabBoxClient(caption)); m_windows.append(client); m_activeClient = client; return std::weak_ptr(client); } void MockTabBoxHandler::closeWindow(TabBox::TabBoxClient *client) { QList>::iterator it = m_windows.begin(); for (; it != m_windows.end(); ++it) { if ((*it).get() == client) { m_windows.erase(it); return; } } } } // namespace KWin