2022-03-17 18:25:16 +01:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "../events/Events.hpp"
|
|
|
|
#include "../defines.hpp"
|
|
|
|
#include "../../wlr-layer-shell-unstable-v1-protocol.h"
|
2022-03-20 14:00:46 +01:00
|
|
|
#include "../Window.hpp"
|
2022-03-27 17:25:20 +02:00
|
|
|
#include "SubsurfaceTree.hpp"
|
2022-03-17 18:25:16 +01:00
|
|
|
|
|
|
|
struct SLayerSurface {
|
|
|
|
wlr_layer_surface_v1* layerSurface;
|
|
|
|
wl_list link;
|
|
|
|
|
|
|
|
DYNLISTENER(destroyLayerSurface);
|
|
|
|
DYNLISTENER(mapLayerSurface);
|
|
|
|
DYNLISTENER(unmapLayerSurface);
|
|
|
|
DYNLISTENER(commitLayerSurface);
|
2022-03-20 12:11:57 +01:00
|
|
|
DYNLISTENER(newPopup);
|
2022-03-17 18:25:16 +01:00
|
|
|
|
|
|
|
wlr_box geometry;
|
2022-03-27 17:25:20 +02:00
|
|
|
Vector2D position;
|
2022-03-17 18:25:16 +01:00
|
|
|
zwlr_layer_shell_v1_layer layer;
|
2022-03-18 22:35:51 +01:00
|
|
|
|
|
|
|
int monitorID = -1;
|
|
|
|
|
|
|
|
|
|
|
|
// For the list lookup
|
|
|
|
bool operator==(const SLayerSurface& rhs) {
|
|
|
|
return layerSurface == rhs.layerSurface && monitorID == rhs.monitorID;
|
|
|
|
}
|
2022-03-17 20:22:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
struct SRenderData {
|
|
|
|
wlr_output* output;
|
|
|
|
timespec* when;
|
2022-03-21 16:13:43 +01:00
|
|
|
int x, y;
|
|
|
|
|
|
|
|
// for iters
|
|
|
|
void* data = nullptr;
|
|
|
|
wlr_surface* surface = nullptr;
|
|
|
|
int w, h;
|
2022-04-02 13:41:15 +02:00
|
|
|
void* pMonitor = nullptr;
|
2022-04-05 18:32:06 +02:00
|
|
|
|
|
|
|
// for rounding
|
|
|
|
bool dontRound = true;
|
2022-04-05 19:28:10 +02:00
|
|
|
|
|
|
|
// for fade
|
|
|
|
float fadeAlpha = 255.f;
|
2022-04-18 18:23:10 +02:00
|
|
|
|
|
|
|
// for alpha settings
|
2022-04-18 18:33:50 +02:00
|
|
|
float alpha = 1.f;
|
2022-03-17 20:22:29 +01:00
|
|
|
};
|
2022-03-17 20:55:04 +01:00
|
|
|
|
|
|
|
struct SKeyboard {
|
|
|
|
wlr_input_device* keyboard;
|
|
|
|
|
|
|
|
DYNLISTENER(keyboardMod);
|
|
|
|
DYNLISTENER(keyboardKey);
|
|
|
|
DYNLISTENER(keyboardDestroy);
|
2022-03-18 23:25:26 +01:00
|
|
|
|
|
|
|
// For the list lookup
|
|
|
|
bool operator==(const SKeyboard& rhs) {
|
|
|
|
return keyboard == rhs.keyboard;
|
|
|
|
}
|
2022-03-20 12:11:57 +01:00
|
|
|
};
|
|
|
|
|
2022-04-17 21:40:04 +02:00
|
|
|
struct SMouse {
|
|
|
|
wlr_input_device* mouse = nullptr;
|
|
|
|
|
|
|
|
wlr_pointer_constraint_v1* currentConstraint = nullptr;
|
|
|
|
|
|
|
|
pixman_region32_t confinedTo;
|
|
|
|
|
|
|
|
DYNLISTENER(commitConstraint);
|
2022-05-12 12:13:02 +02:00
|
|
|
DYNLISTENER(destroyMouse);
|
2022-04-17 21:40:04 +02:00
|
|
|
|
|
|
|
bool operator==(const SMouse& b) {
|
|
|
|
return mouse == b.mouse;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
struct SConstraint {
|
|
|
|
SMouse* pMouse = nullptr;
|
|
|
|
wlr_pointer_constraint_v1* constraint = nullptr;
|
|
|
|
|
|
|
|
DYNLISTENER(setConstraintRegion);
|
|
|
|
DYNLISTENER(destroyConstraint);
|
|
|
|
|
|
|
|
bool operator==(const SConstraint& b) {
|
|
|
|
return constraint == b.constraint;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2022-04-02 13:41:15 +02:00
|
|
|
struct SMonitor;
|
|
|
|
|
2022-03-20 14:00:46 +01:00
|
|
|
struct SXDGPopup {
|
|
|
|
CWindow* parentWindow = nullptr;
|
2022-03-27 17:25:20 +02:00
|
|
|
SXDGPopup* parentPopup = nullptr;
|
2022-03-20 14:00:46 +01:00
|
|
|
wlr_xdg_popup* popup = nullptr;
|
2022-04-02 13:41:15 +02:00
|
|
|
SMonitor* monitor = nullptr;
|
2022-03-20 14:00:46 +01:00
|
|
|
|
|
|
|
DYNLISTENER(newPopupFromPopupXDG);
|
|
|
|
DYNLISTENER(destroyPopupXDG);
|
|
|
|
DYNLISTENER(mapPopupXDG);
|
|
|
|
DYNLISTENER(unmapPopupXDG);
|
|
|
|
|
2022-04-02 13:41:15 +02:00
|
|
|
double lx;
|
|
|
|
double ly;
|
2022-03-27 17:25:20 +02:00
|
|
|
|
|
|
|
SSurfaceTreeNode* pSurfaceTree = nullptr;
|
|
|
|
|
2022-03-20 14:00:46 +01:00
|
|
|
// For the list lookup
|
|
|
|
bool operator==(const SXDGPopup& rhs) {
|
|
|
|
return popup == rhs.popup;
|
|
|
|
}
|
2022-03-22 18:29:13 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
struct SSeat {
|
|
|
|
wlr_seat* seat = nullptr;
|
|
|
|
wl_client* exclusiveClient = nullptr;
|
2022-04-17 21:40:04 +02:00
|
|
|
|
|
|
|
SMouse* mouse = nullptr;
|
2022-03-31 17:25:23 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
struct SDrag {
|
|
|
|
wlr_drag* drag = nullptr;
|
|
|
|
|
|
|
|
DYNLISTENER(destroy);
|
|
|
|
|
|
|
|
// Icon
|
|
|
|
|
|
|
|
bool iconMapped = false;
|
|
|
|
|
|
|
|
wlr_drag_icon* dragIcon = nullptr;
|
|
|
|
|
|
|
|
Vector2D pos;
|
|
|
|
|
|
|
|
DYNLISTENER(destroyIcon);
|
|
|
|
DYNLISTENER(mapIcon);
|
|
|
|
DYNLISTENER(unmapIcon);
|
|
|
|
DYNLISTENER(commitIcon);
|
2022-03-17 20:55:04 +01:00
|
|
|
};
|