acf3c62aae3bef97c2178e57be46da6e024d8fbc

Author
outfoxxed <outfoxxed@outfoxxed.me>
Committer
outfoxxed <outfoxxed@outfoxxed.me>
Date

Message

Fix support for window focus requests

Closes #7

Diff

 1diff --git a/flake.lock b/flake.lock
 2index a32c989355e6bb83a37944f2585edeaa639dbc7c..ed88db152f6b6fd39324788d538ddb88aaacce31 100644
 3--- a/flake.lock
 4+++ b/flake.lock
 5@@ -8,11 +8,11 @@
 6         "xdph": "xdph"
 7       },
 8       "locked": {
 9-        "lastModified": 1689720698,
10-        "narHash": "sha256-DjW5GZlzULXKdEVag13OEV3/hog1k/5ZjSIRIPOHrcQ=",
11+        "lastModified": 1689763185,
12+        "narHash": "sha256-YOkboQ2w9Zz+jEeQBtFKQGBSYMPPNpFUrN+XYaslH8Q=",
13         "owner": "hyprwm",
14         "repo": "Hyprland",
15-        "rev": "81f4a4f47182c15ee9436d9ab7b2e425a096ce5b",
16+        "rev": "5cd5631fb226e315a233473c961714ed1c73840f",
17         "type": "github"
18       },
19       "original": {
20diff --git a/src/Hy3Layout.cpp b/src/Hy3Layout.cpp
21index d6ff9f3c9c4de89e0f8cdd217e3dc497a1a31dad..525379ea9cb6eb2d6c634a2ef216906dbb757bf8 100644
22--- a/src/Hy3Layout.cpp
23+++ b/src/Hy3Layout.cpp
24@@ -605,6 +605,12 @@ void Hy3Layout::replaceWindowDataWith(CWindow* from, CWindow* to) {
25 	this->applyNodeDataToWindow(node);
26 }
27 
28+void Hy3Layout::requestFocusForWindow(CWindow* window) {
29+	auto node = this->getNodeFromWindow(window);
30+	if (node == nullptr) return;
31+	node->focusWindow();
32+}
33+
34 void Hy3Layout::onEnable() {
35 	for (auto& window: g_pCompositor->m_vWindows) {
36 		if (window->isHidden() || !window->m_bIsMapped || window->m_bFadingOut || window->m_bIsFloating)
37diff --git a/src/Hy3Layout.hpp b/src/Hy3Layout.hpp
38index dfe1beb15ab80df59ff9a1c4a804dd7b146bd150..1a352493531d3a45aef8ed64ca5ca5c77c24144b 100644
39--- a/src/Hy3Layout.hpp
40+++ b/src/Hy3Layout.hpp
41@@ -62,6 +62,7 @@ public:
42 	virtual std::string getLayoutName();
43 	virtual CWindow* getNextWindowCandidate(CWindow*);
44 	virtual void replaceWindowDataWith(CWindow* from, CWindow* to);
45+	virtual void requestFocusForWindow(CWindow*);
46 
47 	virtual void onEnable();
48 	virtual void onDisable();
49diff --git a/src/Hy3Node.cpp b/src/Hy3Node.cpp
50index 6a35409eeb4b3c6543c0c4c2ef754dbdf54b83fa..85b105502b0993965c133df2a69e8b207608e0b8 100644
51--- a/src/Hy3Node.cpp
52+++ b/src/Hy3Node.cpp
53@@ -132,6 +132,7 @@ bool Hy3Node::focusWindow() {
54 	switch (this->data.type) {
55 	case Hy3NodeType::Window:
56 		this->markFocused();
57+		this->data.as_window->setHidden(false);
58 		g_pCompositor->focusWindow(this->data.as_window);
59 
60 		return true;