forked from quickshell/quickshell
hyprland/focus_grab: add HyprlandFocusGrab
This commit is contained in:
parent
e7cfb5cf37
commit
87a884ca36
15 changed files with 607 additions and 0 deletions
46
src/wayland/hyprland/focus_grab/grab.hpp
Normal file
46
src/wayland/hyprland/focus_grab/grab.hpp
Normal 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
|
||||
Loading…
Add table
Add a link
Reference in a new issue