summaryrefslogtreecommitdiff
path: root/src/Window.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Window.hpp')
-rw-r--r--src/Window.hpp207
1 files changed, 104 insertions, 103 deletions
diff --git a/src/Window.hpp b/src/Window.hpp
index 2d76d12d..2d0dd0cc 100644
--- a/src/Window.hpp
+++ b/src/Window.hpp
@@ -8,7 +8,8 @@
#include <deque>
#include "config/ConfigDataValues.hpp"
-enum eIdleInhibitMode {
+enum eIdleInhibitMode
+{
IDLEINHIBIT_NONE = 0,
IDLEINHIBIT_ALWAYS,
IDLEINHIBIT_FULLSCREEN,
@@ -16,49 +17,49 @@ enum eIdleInhibitMode {
};
struct SWindowSpecialRenderData {
- bool alphaOverride = false;
- float alpha = 1.f;
- bool alphaInactiveOverride = false;
- float alphaInactive = -1.f; // -1 means unset
+ bool alphaOverride = false;
+ float alpha = 1.f;
+ bool alphaInactiveOverride = false;
+ float alphaInactive = -1.f; // -1 means unset
- int64_t activeBorderColor = -1; // -1 means unset
+ int64_t activeBorderColor = -1; // -1 means unset
int64_t inactiveBorderColor = -1; // -1 means unset
// set by the layout
- bool rounding = true;
- bool border = true;
- bool decorate = true;
+ bool rounding = true;
+ bool border = true;
+ bool decorate = true;
};
struct SWindowAdditionalConfigData {
- std::string animationStyle = "";
- int rounding = -1; // -1 means no
- bool forceNoBlur = false;
- bool forceOpaque = false;
- bool forceOpaqueOverriden = false; // if true, a rule will not change the forceOpaque state. This is for the force opaque dispatcher.
- bool forceAllowsInput = false;
- bool forceNoAnims = false;
- bool forceNoBorder = false;
- bool forceNoShadow = false;
- bool windowDanceCompat = false;
- bool noMaxSize = false;
+ std::string animationStyle = "";
+ int rounding = -1; // -1 means no
+ bool forceNoBlur = false;
+ bool forceOpaque = false;
+ bool forceOpaqueOverriden = false; // if true, a rule will not change the forceOpaque state. This is for the force opaque dispatcher.
+ bool forceAllowsInput = false;
+ bool forceNoAnims = false;
+ bool forceNoBorder = false;
+ bool forceNoShadow = false;
+ bool windowDanceCompat = false;
+ bool noMaxSize = false;
};
struct SWindowRule {
std::string szRule;
std::string szValue;
- bool v2 = false;
+ bool v2 = false;
std::string szTitle;
std::string szClass;
- int bX11 = -1; // -1 means "ANY"
- int bFloating = -1;
- int bFullscreen = -1;
- int bPinned = -1;
+ int bX11 = -1; // -1 means "ANY"
+ int bFloating = -1;
+ int bFullscreen = -1;
+ int bPinned = -1;
};
class CWindow {
-public:
+ public:
CWindow();
~CWindow();
@@ -79,142 +80,142 @@ public:
DYNLISTENER(toplevelClose);
DYNLISTENER(toplevelActivate);
DYNLISTENER(toplevelFullscreen);
- // DYNLISTENER(newSubsurfaceWindow);
+ // DYNLISTENER(newSubsurfaceWindow);
union {
- wlr_xdg_surface* xdg;
+ wlr_xdg_surface* xdg;
wlr_xwayland_surface* xwayland;
} m_uSurface;
// this is the position and size of the "bounding box"
- Vector2D m_vPosition = Vector2D(0,0);
- Vector2D m_vSize = Vector2D(0,0);
+ Vector2D m_vPosition = Vector2D(0, 0);
+ Vector2D m_vSize = Vector2D(0, 0);
// this is the real position and size used to draw the thing
- CAnimatedVariable m_vRealPosition;
- CAnimatedVariable m_vRealSize;
+ CAnimatedVariable m_vRealPosition;
+ CAnimatedVariable m_vRealSize;
// for not spamming the protocols
- Vector2D m_vReportedPosition;
- Vector2D m_vReportedSize;
+ Vector2D m_vReportedPosition;
+ Vector2D m_vReportedSize;
// for restoring floating statuses
- Vector2D m_vLastFloatingSize;
+ Vector2D m_vLastFloatingSize;
// this is used for pseudotiling
- bool m_bIsPseudotiled = false;
- Vector2D m_vPseudoSize = Vector2D(0,0);
+ bool m_bIsPseudotiled = false;
+ Vector2D m_vPseudoSize = Vector2D(0, 0);
- uint64_t m_iTags = 0;
- bool m_bIsFloating = false;
- bool m_bDraggingTiled = false; // for dragging around tiled windows
- bool m_bIsFullscreen = false;
- uint64_t m_iMonitorID = -1;
- std::string m_szTitle = "";
- int m_iWorkspaceID = -1;
+ uint64_t m_iTags = 0;
+ bool m_bIsFloating = false;
+ bool m_bDraggingTiled = false; // for dragging around tiled windows
+ bool m_bIsFullscreen = false;
+ uint64_t m_iMonitorID = -1;
+ std::string m_szTitle = "";
+ int m_iWorkspaceID = -1;
- bool m_bIsMapped = false;
+ bool m_bIsMapped = false;
- bool m_bRequestsFloat = false;
+ bool m_bRequestsFloat = false;
// This is for fullscreen apps
- bool m_bCreatedOverFullscreen = false;
+ bool m_bCreatedOverFullscreen = false;
// XWayland stuff
- bool m_bIsX11 = false;
- bool m_bMappedX11 = false;
- CWindow* m_pX11Parent = nullptr;
- uint64_t m_iX11Type = 0;
- bool m_bIsModal = false;
- bool m_bX11DoesntWantBorders = false;
- bool m_bX11ShouldntFocus = false;
+ bool m_bIsX11 = false;
+ bool m_bMappedX11 = false;
+ CWindow* m_pX11Parent = nullptr;
+ uint64_t m_iX11Type = 0;
+ bool m_bIsModal = false;
+ bool m_bX11DoesntWantBorders = false;
+ bool m_bX11ShouldntFocus = false;
//
// For nofocus
- bool m_bNoFocus = false;
- bool m_bNoInitialFocus = false;
+ bool m_bNoFocus = false;
+ bool m_bNoInitialFocus = false;
// initial fullscreen and fullscreen disabled
- bool m_bWantsInitialFullscreen = false;
- bool m_bNoFullscreenRequest = false;
+ bool m_bWantsInitialFullscreen = false;
+ bool m_bNoFullscreenRequest = false;
- SSurfaceTreeNode* m_pSurfaceTree = nullptr;
+ SSurfaceTreeNode* m_pSurfaceTree = nullptr;
// Animated border
- CGradientValueData m_cRealBorderColor = {0};
- CGradientValueData m_cRealBorderColorPrevious = {0};
- CAnimatedVariable m_fBorderAnimationProgress;
+ CGradientValueData m_cRealBorderColor = {0};
+ CGradientValueData m_cRealBorderColorPrevious = {0};
+ CAnimatedVariable m_fBorderAnimationProgress;
// Fade in-out
- CAnimatedVariable m_fAlpha;
- bool m_bFadingOut = false;
- bool m_bReadyToDelete = false;
- Vector2D m_vOriginalClosedPos; // these will be used for calculations later on in
- Vector2D m_vOriginalClosedSize; // drawing the closing animations
+ CAnimatedVariable m_fAlpha;
+ bool m_bFadingOut = false;
+ bool m_bReadyToDelete = false;
+ Vector2D m_vOriginalClosedPos; // these will be used for calculations later on in
+ Vector2D m_vOriginalClosedSize; // drawing the closing animations
// For pinned (sticky) windows
- bool m_bPinned = false;
+ bool m_bPinned = false;
// for proper cycling. While cycling we can't just move the pointers, so we need to keep track of the last cycled window.
- CWindow* m_pLastCycledWindow = nullptr;
+ CWindow* m_pLastCycledWindow = nullptr;
// Foreign Toplevel proto
- wlr_foreign_toplevel_handle_v1* m_phForeignToplevel = nullptr;
+ wlr_foreign_toplevel_handle_v1* m_phForeignToplevel = nullptr;
// Window decorations
std::deque<std::unique_ptr<IHyprWindowDecoration>> m_dWindowDecorations;
- std::vector<IHyprWindowDecoration*> m_vDecosToRemove;
+ std::vector<IHyprWindowDecoration*> m_vDecosToRemove;
// Special render data, rules, etc
- SWindowSpecialRenderData m_sSpecialRenderData;
- SWindowAdditionalConfigData m_sAdditionalConfigData;
+ SWindowSpecialRenderData m_sSpecialRenderData;
+ SWindowAdditionalConfigData m_sAdditionalConfigData;
// for alpha
- CAnimatedVariable m_fActiveInactiveAlpha;
+ CAnimatedVariable m_fActiveInactiveAlpha;
// animated shadow color
- CAnimatedVariable m_cRealShadowColor;
+ CAnimatedVariable m_cRealShadowColor;
// animated tint
- CAnimatedVariable m_fDimPercent;
+ CAnimatedVariable m_fDimPercent;
// swallowing
- CWindow* m_pSwallowed = nullptr;
+ CWindow* m_pSwallowed = nullptr;
// for toplevel monitor events
- uint64_t m_iLastToplevelMonitorID = -1;
- uint64_t m_iLastSurfaceMonitorID = -1;
+ uint64_t m_iLastToplevelMonitorID = -1;
+ uint64_t m_iLastSurfaceMonitorID = -1;
// for idle inhibiting windows
- eIdleInhibitMode m_eIdleInhibitMode = IDLEINHIBIT_NONE;
+ eIdleInhibitMode m_eIdleInhibitMode = IDLEINHIBIT_NONE;
// 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 && m_bFadingOut == rhs.m_bFadingOut;
+ 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 &&
+ m_bFadingOut == rhs.m_bFadingOut;
}
// methods
- wlr_box getFullWindowBoundingBox();
- wlr_box getWindowIdealBoundingBoxIgnoreReserved();
- void updateWindowDecos();
- pid_t getPID();
+ wlr_box getFullWindowBoundingBox();
+ wlr_box getWindowIdealBoundingBoxIgnoreReserved();
+ void updateWindowDecos();
+ pid_t getPID();
IHyprWindowDecoration* getDecorationByType(eDecorationType);
- void removeDecorationByType(eDecorationType);
- void createToplevelHandle();
- void destroyToplevelHandle();
- void updateToplevel();
- void updateSurfaceOutputs();
- void moveToWorkspace(int);
- CWindow* X11TransientFor();
- void onUnmap();
- void onMap();
- void setHidden(bool hidden);
- bool isHidden();
- void applyDynamicRule(const SWindowRule& r);
- void updateDynamicRules();
-
-private:
+ void removeDecorationByType(eDecorationType);
+ void createToplevelHandle();
+ void destroyToplevelHandle();
+ void updateToplevel();
+ void updateSurfaceOutputs();
+ void moveToWorkspace(int);
+ CWindow* X11TransientFor();
+ void onUnmap();
+ void onMap();
+ void setHidden(bool hidden);
+ bool isHidden();
+ void applyDynamicRule(const SWindowRule& r);
+ void updateDynamicRules();
+
+ private:
// For hidden windows and stuff
- bool m_bHidden = false;
-
+ bool m_bHidden = false;
};