From 126c0ec934d394757ca9fc31f414853aef58a871 Mon Sep 17 00:00:00 2001 From: vaxerski <43317083+vaxerski@users.noreply.github.com> Date: Fri, 17 Dec 2021 22:25:36 +0100 Subject: [PATCH] minor fixes to window focusing --- src/events/events.cpp | 2 +- src/windowManager.cpp | 31 +++++++++++++++++-------------- 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/src/events/events.cpp b/src/events/events.cpp index 36e6181..2751d10 100644 --- a/src/events/events.cpp +++ b/src/events/events.cpp @@ -43,7 +43,7 @@ void Events::setThread() { // Start a GTK thread so that Cairo does not complain. - g_pWindowManager->barThread = g_thread_new("Bar", handle, nullptr); + g_pWindowManager->barThread = g_thread_new("HyprST", handle, nullptr); if (!g_pWindowManager->barThread) { Debug::log(ERR, "Gthread failed!"); diff --git a/src/windowManager.cpp b/src/windowManager.cpp index 2019f6c..a18b211 100644 --- a/src/windowManager.cpp +++ b/src/windowManager.cpp @@ -432,25 +432,28 @@ void CWindowManager::setFocusedWindow(xcb_drawable_t window) { } float values[1]; - if (g_pWindowManager->getWindowFromDrawable(window) && g_pWindowManager->getWindowFromDrawable(window)->getIsFloating()) { - values[0] = XCB_STACK_MODE_ABOVE; - xcb_configure_window(g_pWindowManager->DisplayConnection, window, XCB_CONFIG_WINDOW_STACK_MODE, values); - } + if (g_pWindowManager->getWindowFromDrawable(window)) { + if (g_pWindowManager->getWindowFromDrawable(window)->getIsFloating()) { + values[0] = XCB_STACK_MODE_ABOVE; + xcb_configure_window(g_pWindowManager->DisplayConnection, window, XCB_CONFIG_WINDOW_STACK_MODE, values); + } - // Apply rounded corners, does all the checks inside. - // The border changed so let's not make it rectangular maybe - applyShapeToWindow(g_pWindowManager->getWindowFromDrawable(window)); + // Apply rounded corners, does all the checks inside. + // The border changed so let's not make it rectangular maybe + applyShapeToWindow(g_pWindowManager->getWindowFromDrawable(window)); + } LastWindow = window; - applyShapeToWindow(g_pWindowManager->getWindowFromDrawable(window)); + if (g_pWindowManager->getWindowFromDrawable(window)) + applyShapeToWindow(g_pWindowManager->getWindowFromDrawable(window)); + + // set focus in X11 + xcb_set_input_focus(DisplayConnection, XCB_INPUT_FOCUS_POINTER_ROOT, window, XCB_CURRENT_TIME); + + // EWMH + EWMH::updateCurrentWindow(window); } - - // EWMH - EWMH::updateCurrentWindow(window); - - // set focus in X11 - xcb_set_input_focus(DisplayConnection, XCB_INPUT_FOCUS_POINTER_ROOT, window, XCB_CURRENT_TIME); } // TODO: make this executed less. It's too often imo.