Initial implementation of active window

TODO:
- Sometimes the active event arrives before the create, in which case the window is not activated.
- The window title event also looks unreliable in some cases, will need to investigate
This commit is contained in:
Pol Rivero
2025-05-01 20:22:18 +02:00
parent 59c270ec06
commit 72404a77f0
6 changed files with 57 additions and 5 deletions

View File

@ -31,9 +31,11 @@ struct WindowRepr {
std::string window_class;
std::string window_title;
std::string repr_rewrite;
bool isActive = false;
public:
bool empty() const { return address.empty(); }
void setActive(bool value) { isActive = value; }
};
class WindowCreationPayload {
@ -48,6 +50,7 @@ class WindowCreationPayload {
bool isEmpty(Workspaces& workspace_manager);
bool reprIsReady() const { return std::holds_alternative<Repr>(m_window); }
WindowRepr repr(Workspaces& workspace_manager);
void setActive(bool value) { m_isActive = value; }
std::string getWorkspaceName() const { return m_workspaceName; }
WindowAddress getAddress() const { return m_windowAddress; }
@ -64,6 +67,7 @@ class WindowCreationPayload {
WindowAddress m_windowAddress;
std::string m_workspaceName;
bool m_isActive = false;
int m_timeSpentUncreated = 0;
};

View File

@ -60,6 +60,7 @@ class Workspace {
};
void insertWindow(WindowCreationPayload create_window_paylod);
void initializeWindowMap(const Json::Value& clients_data);
void setActiveWindow(WindowAddress const& addr);
bool onWindowOpened(WindowCreationPayload const& create_window_paylod);
std::optional<WindowRepr> closeWindow(WindowAddress const& addr);

View File

@ -103,6 +103,7 @@ class Workspaces : public AModule, public EventHandler {
void onWindowMoved(std::string const& payload);
void onWindowTitleEvent(std::string const& payload);
void onActiveWindowChanged(WindowAddress const& payload);
void onConfigReloaded();
@ -170,6 +171,7 @@ class Workspaces : public AModule, public EventHandler {
IconLoader m_iconLoader;
bool m_enableTaskbar = false;
bool m_updateActiveWindow = false;
bool m_taskbarWithIcon = false;
bool m_taskbarWithTitle = false;
std::string m_taskbarFormatBefore;