summaryrefslogtreecommitdiffstats
path: root/xbmc/windowing/wayland/ShellSurfaceXdgShellUnstableV6.h
diff options
context:
space:
mode:
Diffstat (limited to 'xbmc/windowing/wayland/ShellSurfaceXdgShellUnstableV6.h')
-rw-r--r--xbmc/windowing/wayland/ShellSurfaceXdgShellUnstableV6.h77
1 files changed, 77 insertions, 0 deletions
diff --git a/xbmc/windowing/wayland/ShellSurfaceXdgShellUnstableV6.h b/xbmc/windowing/wayland/ShellSurfaceXdgShellUnstableV6.h
new file mode 100644
index 0000000..d84f4a5
--- /dev/null
+++ b/xbmc/windowing/wayland/ShellSurfaceXdgShellUnstableV6.h
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2017-2018 Team Kodi
+ * This file is part of Kodi - https://kodi.tv
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ * See LICENSES/README.md for more information.
+ */
+
+#pragma once
+
+#include "Connection.h"
+#include "ShellSurface.h"
+
+#include <wayland-extra-protocols.hpp>
+
+namespace KODI
+{
+namespace WINDOWING
+{
+namespace WAYLAND
+{
+
+/**
+ * Shell surface implementation for unstable xdg_shell in version 6
+ *
+ * xdg_shell was accepted as a stable protocol in wayland-protocols, which
+ * means this class is deprecated and can be safely removed once the relevant
+ * compositors have made the switch.
+ */
+class CShellSurfaceXdgShellUnstableV6 : public IShellSurface
+{
+public:
+ /**
+ * Construct xdg_shell toplevel object for given surface
+ *
+ * \param handler the shell surface handler
+ * \param display the wl_display global (for initial roundtrip)
+ * \param shell the zxdg_shell_v6 global
+ * \param surface surface to make shell surface for
+ * \param title title of the surfae
+ * \param class_ class of the surface, which should match the name of the
+ * .desktop file of the application
+ */
+ 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_);
+ ~CShellSurfaceXdgShellUnstableV6() noexcept override;
+
+ static CShellSurfaceXdgShellUnstableV6* TryCreate(IShellSurfaceHandler& handler, CConnection& connection, wayland::surface_t const& surface, std::string const& title, std::string const& class_);
+
+ void Initialize() override;
+
+ void SetFullScreen(wayland::output_t const& output, float refreshRate) override;
+ void SetWindowed() override;
+ void SetMaximized() override;
+ void UnsetMaximized() override;
+ void SetMinimized() override;
+ void SetWindowGeometry(CRectInt geometry) override;
+ void AckConfigure(std::uint32_t serial) override;
+
+ void StartMove(const wayland::seat_t& seat, std::uint32_t serial) override;
+ void StartResize(const wayland::seat_t& seat, std::uint32_t serial, wayland::shell_surface_resize edge) override;
+ void ShowShellContextMenu(const wayland::seat_t& seat, std::uint32_t serial, CPointInt position) override;
+
+private:
+ IShellSurfaceHandler& m_handler;
+ wayland::display_t& m_display;
+ wayland::zxdg_shell_v6_t m_shell;
+ wayland::surface_t m_surface;
+ wayland::zxdg_surface_v6_t m_xdgSurface;
+ wayland::zxdg_toplevel_v6_t m_xdgToplevel;
+
+ CSizeInt m_configuredSize;
+ StateBitset m_configuredState;
+};
+
+}
+}
+}