From 9c654f471d241532bc660202ff61c5b3eaafe63d Mon Sep 17 00:00:00 2001 From: codic Date: Sat, 18 Dec 2021 17:39:54 -0800 Subject: [PATCH 1/3] 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; +}; From fed9b8ca04ca52b466a1c0fa7bb771873dc2795e Mon Sep 17 00:00:00 2001 From: codic Date: Sat, 18 Dec 2021 23:23:51 -0800 Subject: [PATCH 2/3] fix things in review --- src/config/ConfigManager.cpp | 3 +++ src/ewmh/ewmh.cpp | 13 ++++++++++--- src/ewmh/ewmh.hpp | 1 + 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/config/ConfigManager.cpp b/src/config/ConfigManager.cpp index 812db85..d09b299 100644 --- a/src/config/ConfigManager.cpp +++ b/src/config/ConfigManager.cpp @@ -318,6 +318,7 @@ void parseLine(std::string& line) { } void ConfigManager::loadConfigLoadVars() { + const auto ORIGBORDERSIZE = ConfigManager::getInt("border_size"); Debug::log(LOG, "Reloading the config!"); ConfigManager::parseError = ""; // reset the error ConfigManager::currentCategory = ""; // reset the category @@ -402,6 +403,8 @@ void ConfigManager::loadConfigLoadVars() { loadBar = true; isFirstLaunch = false; + + if (ORIGBORDERSIZE != ConfigManager::getInt("border_size")) EWMH::refreshAllExtents(); } void ConfigManager::applyKeybindsToX() { diff --git a/src/ewmh/ewmh.cpp b/src/ewmh/ewmh.cpp index f2137b2..f9ae234 100644 --- a/src/ewmh/ewmh.cpp +++ b/src/ewmh/ewmh.cpp @@ -54,7 +54,14 @@ void EWMH::updateClientList() { 32, windowsList.size(), ArrWindowList); } -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); +void EWMH::refreshAllExtents() { + for (auto& w : g_pWindowManager->windows) + if (w.getDrawable() > 0) + setFrameExtents(w.getDrawable()); +} + +void EWMH::setFrameExtents(xcb_window_t w) { + const auto BORDERSIZE = ConfigManager::getInt("border_size"); + uint32_t extents[4] = {BORDERSIZE,BORDERSIZE,BORDERSIZE,BORDERSIZE}; + 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 c77da8d..cb26343 100644 --- a/src/ewmh/ewmh.hpp +++ b/src/ewmh/ewmh.hpp @@ -7,6 +7,7 @@ namespace EWMH { void updateCurrentWindow(xcb_window_t); void updateClientList(); void setFrameExtents(xcb_window_t); + void refreshAllExtents(); inline xcb_window_t EWMHwindow = XCB_WINDOW_NONE; }; From e9e0805b9157a453f20a4973b18b4cada920881a Mon Sep 17 00:00:00 2001 From: codic Date: Sat, 18 Dec 2021 23:30:54 -0800 Subject: [PATCH 3/3] inside ConfigManager, don't use getter --- src/config/ConfigManager.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/config/ConfigManager.cpp b/src/config/ConfigManager.cpp index d09b299..1f5938b 100644 --- a/src/config/ConfigManager.cpp +++ b/src/config/ConfigManager.cpp @@ -318,7 +318,7 @@ void parseLine(std::string& line) { } void ConfigManager::loadConfigLoadVars() { - const auto ORIGBORDERSIZE = ConfigManager::getInt("border_size"); + const auto ORIGBORDERSIZE = configValues["border_size"].intValue; Debug::log(LOG, "Reloading the config!"); ConfigManager::parseError = ""; // reset the error ConfigManager::currentCategory = ""; // reset the category @@ -404,7 +404,7 @@ void ConfigManager::loadConfigLoadVars() { loadBar = true; isFirstLaunch = false; - if (ORIGBORDERSIZE != ConfigManager::getInt("border_size")) EWMH::refreshAllExtents(); + if (ORIGBORDERSIZE != configValues["border_size"].intValue) EWMH::refreshAllExtents(); } void ConfigManager::applyKeybindsToX() {