Currently, we have two functions that update the color scheme for a client - updateColorScheme(QString) and updateColorScheme(). Even though they both share the same name, they do different things. The first one sets the specified color scheme, while the other determines the color scheme preferred by the client and assigns it. This change refactors the color scheme initialization code so we no longer need those two methods. The setColorScheme() method sets the specified color scheme, and the preferredColorScheme() method returns the color scheme preferred by the client. Sub-classes of AbstractClient can override the preferredColorScheme() method in order to add support for platform-specific color scheme protocols. The end result: color scheme related code is a bit more comprehensible.
67 lines
2.3 KiB
C++
67 lines
2.3 KiB
C++
/*
|
|
KWin - the KDE window manager
|
|
This file is part of the KDE project.
|
|
|
|
SPDX-FileCopyrightText: 2020 Aleix Pol Gonzalez <aleixpol@kde.org>
|
|
|
|
SPDX-License-Identifier: GPL-2.0-or-later
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include "waylandclient.h"
|
|
#include <QPointer>
|
|
#include <KWaylandServer/inputmethod_v1_interface.h>
|
|
|
|
namespace KWin
|
|
{
|
|
class AbstractWaylandOutput;
|
|
|
|
class InputPanelV1Client : public WaylandClient
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
InputPanelV1Client(KWaylandServer::InputPanelSurfaceV1Interface *panelSurface);
|
|
|
|
enum Mode {
|
|
Toplevel,
|
|
Overlay,
|
|
};
|
|
Q_ENUM(Mode)
|
|
|
|
void setFrameGeometry(const QRect &geometry, KWin::AbstractClient::ForceGeometry_t force = NormalGeometrySet) override;
|
|
|
|
void destroyClient() override;
|
|
QRect bufferGeometry() const override { return frameGeometry(); }
|
|
bool isCloseable() const override { return false; }
|
|
bool noBorder() const override { return true; }
|
|
bool isResizable() const override { return false; }
|
|
bool isMovable() const override { return false; }
|
|
bool isMovableAcrossScreens() const override { return false; }
|
|
bool userCanSetNoBorder() const override { return false; }
|
|
bool acceptsFocus() const override { return false; }
|
|
void showOnScreenEdge() override {}
|
|
bool supportsWindowRules() const override { return false; }
|
|
void closeWindow() override {}
|
|
bool takeFocus() override { return false; }
|
|
bool wantsInput() const override { return false; }
|
|
bool isInputMethod() const override { return true; }
|
|
bool isInitialPositionSet() const override { return true; }
|
|
void updateDecoration(bool /*check_workspace_pos*/, bool /*force*/) override {}
|
|
void setNoBorder(bool /*set*/) override {}
|
|
NET::WindowType windowType(bool /*direct*/, int /*supported_types*/) const override;
|
|
void debug(QDebug & stream) const override;
|
|
QRect inputGeometry() const override;
|
|
|
|
private:
|
|
void showTopLevel(KWaylandServer::OutputInterface *output, KWaylandServer::InputPanelSurfaceV1Interface::Position position);
|
|
void showOverlayPanel();
|
|
void reposition();
|
|
void setOutput(KWaylandServer::OutputInterface* output);
|
|
|
|
QPointer<AbstractWaylandOutput> m_output;
|
|
Mode m_mode = Toplevel;
|
|
const QPointer<KWaylandServer::InputPanelSurfaceV1Interface> m_panelSurface;
|
|
};
|
|
|
|
}
|