kodi
ShellSurfaceXdgShellUnstableV6.h
1 /*
2  * Copyright (C) 2017-2018 Team Kodi
3  * This file is part of Kodi - https://kodi.tv
4  *
5  * SPDX-License-Identifier: GPL-2.0-or-later
6  * See LICENSES/README.md for more information.
7  */
8 
9 #pragma once
10 
11 #include "Connection.h"
12 #include "ShellSurface.h"
13 
14 #include <wayland-extra-protocols.hpp>
15 
16 namespace KODI
17 {
18 namespace WINDOWING
19 {
20 namespace WAYLAND
21 {
22 
31 {
32 public:
44  CShellSurfaceXdgShellUnstableV6(IShellSurfaceHandler& handler, wayland::display_t& display, wayland::zxdg_shell_v6_t const& shell, wayland::surface_t const& surface, std::string const& title, std::string const& class_);
45  ~CShellSurfaceXdgShellUnstableV6() noexcept override;
46 
47  static CShellSurfaceXdgShellUnstableV6* TryCreate(IShellSurfaceHandler& handler, CConnection& connection, wayland::surface_t const& surface, std::string const& title, std::string const& class_);
48 
49  void Initialize() override;
50 
51  void SetFullScreen(wayland::output_t const& output, float refreshRate) override;
52  void SetWindowed() override;
53  void SetMaximized() override;
54  void UnsetMaximized() override;
55  void SetMinimized() override;
56  void SetWindowGeometry(CRectInt geometry) override;
57  void AckConfigure(std::uint32_t serial) override;
58 
59  void StartMove(const wayland::seat_t& seat, std::uint32_t serial) override;
60  void StartResize(const wayland::seat_t& seat, std::uint32_t serial, wayland::shell_surface_resize edge) override;
61  void ShowShellContextMenu(const wayland::seat_t& seat, std::uint32_t serial, CPointInt position) override;
62 
63 private:
64  IShellSurfaceHandler& m_handler;
65  wayland::display_t& m_display;
66  wayland::zxdg_shell_v6_t m_shell;
67  wayland::surface_t m_surface;
68  wayland::zxdg_surface_v6_t m_xdgSurface;
69  wayland::zxdg_toplevel_v6_t m_xdgToplevel;
70 
71  CSizeInt m_configuredSize;
72  StateBitset m_configuredState;
73 };
74 
75 }
76 }
77 }
void Initialize() override
Initialize shell surface.
Definition: ShellSurfaceXdgShellUnstableV6.cpp:86
Connection to Wayland compositor.
Definition: Connection.h:25
Definition: AudioDecoder.h:18
Abstraction for shell surfaces to support multiple protocols such as wl_shell (for compatibility) and...
Definition: ShellSurface.h:34
CShellSurfaceXdgShellUnstableV6(IShellSurfaceHandler &handler, wayland::display_t &display, wayland::zxdg_shell_v6_t const &shell, wayland::surface_t const &surface, std::string const &title, std::string const &class_)
Construct xdg_shell toplevel object for given surface.
Definition: ShellSurfaceXdgShellUnstableV6.cpp:55
Shell surface implementation for unstable xdg_shell in version 6.
Definition: ShellSurfaceXdgShellUnstableV6.h:30