From 9c654f471d241532bc660202ff61c5b3eaafe63d Mon Sep 17 00:00:00 2001 From: codic Date: Sat, 18 Dec 2021 17:39:54 -0800 Subject: [PATCH] implement ewmh atom _NET_FRAME_EXTENTS --- src/events/events.cpp | 3 ++- src/ewmh/ewmh.cpp | 7 ++++++- src/ewmh/ewmh.hpp | 5 +++-- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/events/events.cpp b/src/events/events.cpp index fd86d6d..65a926b 100644 --- a/src/events/events.cpp +++ b/src/events/events.cpp @@ -420,6 +420,7 @@ void Events::eventMapWindow(xcb_generic_event_t* event) { // EWMH EWMH::updateClientList(); + EWMH::setFrameExtents(E->window); } void Events::eventButtonPress(xcb_generic_event_t* event) { @@ -620,4 +621,4 @@ void Events::eventClientMessage(xcb_generic_event_t* event) { xcb_map_window(g_pWindowManager->DisplayConnection, CLIENT); } } -} \ No newline at end of file +} diff --git a/src/ewmh/ewmh.cpp b/src/ewmh/ewmh.cpp index 83a45a6..f2137b2 100644 --- a/src/ewmh/ewmh.cpp +++ b/src/ewmh/ewmh.cpp @@ -52,4 +52,9 @@ void EWMH::updateClientList() { xcb_change_property(g_pWindowManager->DisplayConnection, XCB_PROP_MODE_REPLACE, g_pWindowManager->Screen->root, HYPRATOMS["_NET_CLIENT_LIST"], XCB_ATOM_WINDOW, 32, windowsList.size(), ArrWindowList); -} \ No newline at end of file +} + +void EWMH::setFrameExtents(xcb_window_t w) { + uint32_t extents[4] = {ConfigManager::getInt("border_size"), ConfigManager::getInt("border_size"), ConfigManager::getInt("border_size"), ConfigManager::getInt("border_size")}; + xcb_change_property(g_pWindowManager->DisplayConnection, XCB_PROP_MODE_REPLACE, w, HYPRATOMS["_NET_FRAME_EXTENTS"], XCB_ATOM_CARDINAL, 32, 4, &extents); +} diff --git a/src/ewmh/ewmh.hpp b/src/ewmh/ewmh.hpp index 4d5f3fb..c77da8d 100644 --- a/src/ewmh/ewmh.hpp +++ b/src/ewmh/ewmh.hpp @@ -6,6 +6,7 @@ namespace EWMH { void setupInitEWMH(); void updateCurrentWindow(xcb_window_t); void updateClientList(); + void setFrameExtents(xcb_window_t); - inline xcb_window_t EWMHwindow = 0; -}; \ No newline at end of file + inline xcb_window_t EWMHwindow = XCB_WINDOW_NONE; +};