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;