hyprland/focus_grab: add HyprlandFocusGrab

This commit is contained in:
outfoxxed 2024-05-03 03:08:32 -07:00
parent e7cfb5cf37
commit 87a884ca36
Signed by: outfoxxed
GPG key ID: 4C88A185FB89301E
15 changed files with 607 additions and 0 deletions

View file

@ -0,0 +1,46 @@
#pragma once
#include <private/qwaylandwindow_p.h>
#include <qlist.h>
#include <qobject.h>
#include <qtclasshelpermacros.h>
#include <qtmetamacros.h>
#include <qwayland-hyprland-focus-grab-v1.h>
#include <qwindow.h>
#include <wayland-hyprland-focus-grab-v1-client-protocol.h>
namespace qs::hyprland::focus_grab {
using HyprlandFocusGrab = QtWayland::hyprland_focus_grab_v1;
class FocusGrab
: public QObject
, public HyprlandFocusGrab {
using QWaylandWindow = QtWaylandClient::QWaylandWindow;
Q_OBJECT;
public:
explicit FocusGrab(::hyprland_focus_grab_v1* grab);
~FocusGrab() override;
Q_DISABLE_COPY_MOVE(FocusGrab);
[[nodiscard]] bool isActive() const;
void addWindow(QWindow* window);
void removeWindow(QWindow* window);
void sync();
signals:
void activated();
void cleared();
private:
void hyprland_focus_grab_v1_cleared() override;
void addWaylandWindow(QWaylandWindow* window);
QList<QWaylandWindow*> pendingAdditions;
bool commitRequired = false;
bool active = false;
};
} // namespace qs::hyprland::focus_grab