mirror of
https://github.com/hyprwm/Hyprland
synced 2024-11-05 08:45:59 +01:00
b2c3440477
* animation: Refactor AnimatedVariable This commit decomposes the AnimatedVariable class into a base class with the common attribute to all variable types and a templated derived type containing strongly typed info on the type being animated. Access to the typed version is perfomed using the visitor pattern. A utility is provided to build a visitor on the fly using lambdas. Adding a new type to be animated should just be a matter of adding the typed in the list defined by the ANIMABLE_TYPES macro The size of the commit is justified by the API change in the AnimatedVariable class. No more vec(), fl() or col() method but a unified value() method. * animation: Remove visitor pattern * animation: Fix coding style * animation: Fix coding style
67 lines
1.8 KiB
C++
67 lines
1.8 KiB
C++
#pragma once
|
|
|
|
#include "../helpers/AnimatedVariable.hpp"
|
|
#include <string>
|
|
#include "../defines.hpp"
|
|
|
|
enum eFullscreenMode : int8_t {
|
|
FULLSCREEN_INVALID = -1,
|
|
FULLSCREEN_FULL = 0,
|
|
FULLSCREEN_MAXIMIZED
|
|
};
|
|
|
|
class CWindow;
|
|
|
|
class CWorkspace {
|
|
public:
|
|
CWorkspace(int monitorID, std::string name, bool special = false);
|
|
~CWorkspace();
|
|
|
|
// Workspaces ID-based have IDs > 0
|
|
// and workspaces name-based have IDs starting with -1337
|
|
int m_iID = -1;
|
|
std::string m_szName = "";
|
|
uint64_t m_iMonitorID = -1;
|
|
// Previous workspace ID is stored during a workspace change, allowing travel
|
|
// to the previous workspace.
|
|
struct SPrevWorkspaceData {
|
|
int iID = -1;
|
|
std::string name = "";
|
|
} m_sPrevWorkspace;
|
|
|
|
bool m_bHasFullscreenWindow = false;
|
|
eFullscreenMode m_efFullscreenMode = FULLSCREEN_FULL;
|
|
|
|
wl_array m_wlrCoordinateArr;
|
|
|
|
// for animations
|
|
CAnimatedVariable<Vector2D> m_vRenderOffset;
|
|
CAnimatedVariable<float> m_fAlpha;
|
|
bool m_bForceRendering = false;
|
|
|
|
// "scratchpad"
|
|
bool m_bIsSpecialWorkspace = false;
|
|
|
|
// last window
|
|
CWindow* m_pLastFocusedWindow = nullptr;
|
|
|
|
// user-set
|
|
bool m_bDefaultFloating = false;
|
|
bool m_bDefaultPseudo = false;
|
|
|
|
// last monitor (used on reconnect)
|
|
std::string m_szLastMonitor = "";
|
|
|
|
// Whether the user configured command for on-created-empty has been executed, if any
|
|
bool m_bOnCreatedEmptyExecuted = false;
|
|
|
|
void startAnim(bool in, bool left, bool instant = false);
|
|
void setActive(bool on);
|
|
|
|
void moveToMonitor(const int&);
|
|
|
|
CWindow* getLastFocusedWindow();
|
|
void rememberPrevWorkspace(const CWorkspace* prevWorkspace);
|
|
|
|
std::string getConfigName();
|
|
};
|