summaryrefslogtreecommitdiff
path: root/src/desktop/Window.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/desktop/Window.hpp')
-rw-r--r--src/desktop/Window.hpp31
1 files changed, 28 insertions, 3 deletions
diff --git a/src/desktop/Window.hpp b/src/desktop/Window.hpp
index 6bff095c..24d9562b 100644
--- a/src/desktop/Window.hpp
+++ b/src/desktop/Window.hpp
@@ -14,6 +14,8 @@
#include "DesktopTypes.hpp"
#include "../helpers/signal/Signal.hpp"
+class CXDGSurfaceResource;
+
enum eIdleInhibitMode {
IDLEINHIBIT_NONE = 0,
IDLEINHIBIT_ALWAYS,
@@ -196,9 +198,12 @@ struct SInitialWorkspaceToken {
class CWindow {
public:
+ static PHLWINDOW create(SP<CXDGSurfaceResource>);
+ // xwl
static PHLWINDOW create();
private:
+ CWindow(SP<CXDGSurfaceResource> resource);
CWindow();
public:
@@ -233,9 +238,9 @@ class CWindow {
} events;
union {
- wlr_xdg_surface* xdg;
wlr_xwayland_surface* xwayland;
} m_uSurface;
+ WP<CXDGSurfaceResource> m_pXDGSurface;
// this is the position and size of the "bounding box"
Vector2D m_vPosition = Vector2D(0, 0);
@@ -271,6 +276,7 @@ class CWindow {
bool m_bWasMaximized = false;
uint64_t m_iMonitorID = -1;
std::string m_szTitle = "";
+ std::string m_szClass = "";
std::string m_szInitialTitle = "";
std::string m_szInitialClass = "";
PHLWORKSPACE m_pWorkspace;
@@ -385,7 +391,7 @@ class CWindow {
// For the list lookup
bool operator==(const CWindow& rhs) {
- return m_uSurface.xdg == rhs.m_uSurface.xdg && m_uSurface.xwayland == rhs.m_uSurface.xwayland && m_vPosition == rhs.m_vPosition && m_vSize == rhs.m_vSize &&
+ return m_pXDGSurface == rhs.m_pXDGSurface && m_uSurface.xwayland == rhs.m_uSurface.xwayland && m_vPosition == rhs.m_vPosition && m_vSize == rhs.m_vSize &&
m_bFadingOut == rhs.m_bFadingOut;
}
@@ -424,6 +430,7 @@ class CWindow {
int workspaceID();
bool onSpecialWorkspace();
void activate(bool force = false);
+ int surfacesCount();
int getRealBorderSize();
void updateSpecialRenderData();
@@ -450,6 +457,13 @@ class CWindow {
void switchWithWindowInGroup(PHLWINDOW pWindow);
void setAnimationsToMove();
void onWorkspaceAnimUpdate();
+ void onUpdateState();
+ void onUpdateMeta();
+ std::string fetchTitle();
+ std::string fetchClass();
+
+ // listeners
+ void onAck(uint32_t serial);
//
std::unordered_map<std::string, std::string> getEnv();
@@ -457,6 +471,17 @@ class CWindow {
//
PHLWINDOWREF m_pSelf;
+ // make private once we move listeners to inside CWindow
+ struct {
+ CHyprSignalListener map;
+ CHyprSignalListener ack;
+ CHyprSignalListener unmap;
+ CHyprSignalListener commit;
+ CHyprSignalListener destroy;
+ CHyprSignalListener updateState;
+ CHyprSignalListener updateMetadata;
+ } listeners;
+
private:
// For hidden windows and stuff
bool m_bHidden = false;
@@ -520,7 +545,7 @@ struct std::formatter<PHLWINDOW, CharT> : std::formatter<CharT> {
if (formatMonitor)
std::format_to(out, ", monitor: {}", w->m_iMonitorID);
if (formatClass)
- std::format_to(out, ", class: {}", g_pXWaylandManager->getAppIDClass(w));
+ std::format_to(out, ", class: {}", w->m_szClass);
return std::format_to(out, "]");
}
};