mirror of
https://github.com/hyprwm/Hyprland
synced 2024-11-22 18:46:00 +01:00
core: add option to control which window to focus on close (#7368)
This commit is contained in:
parent
4eff224a7f
commit
946ed1f32a
3 changed files with 15 additions and 2 deletions
|
@ -453,6 +453,13 @@ inline static const std::vector<SConfigOptionDescription> CONFIG_OPTIONS = {
|
||||||
.type = CONFIG_OPTION_INT,
|
.type = CONFIG_OPTION_INT,
|
||||||
.data = SConfigOptionDescription::SRangeData{1, 0, 3},
|
.data = SConfigOptionDescription::SRangeData{1, 0, 3},
|
||||||
},
|
},
|
||||||
|
SConfigOptionDescription{
|
||||||
|
.value = "input:focus_on_close",
|
||||||
|
.description = "Controls the window focus behavior when a window is closed. When set to 0, focus will shift to the next window candidate. When set to 1, focus will shift "
|
||||||
|
"to the window under the cursor.",
|
||||||
|
.type = CONFIG_OPTION_CHOICE,
|
||||||
|
.data = SConfigOptionDescription::SChoiceData{0, "next,cursor"},
|
||||||
|
},
|
||||||
SConfigOptionDescription{
|
SConfigOptionDescription{
|
||||||
.value = "input:mouse_refocus",
|
.value = "input:mouse_refocus",
|
||||||
.description = "if disabled, mouse focus won't switch to the hovered window unless the mouse crosses a window boundary when follow_mouse=1.",
|
.description = "if disabled, mouse focus won't switch to the hovered window unless the mouse crosses a window boundary when follow_mouse=1.",
|
||||||
|
@ -1341,4 +1348,4 @@ inline static const std::vector<SConfigOptionDescription> CONFIG_OPTIONS = {
|
||||||
.type = CONFIG_OPTION_BOOL,
|
.type = CONFIG_OPTION_BOOL,
|
||||||
.data = SConfigOptionDescription::SBoolData{true},
|
.data = SConfigOptionDescription::SBoolData{true},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
|
@ -449,6 +449,7 @@ CConfigManager::CConfigManager() {
|
||||||
m_pConfig->addConfigValue("animations:first_launch_animation", Hyprlang::INT{1});
|
m_pConfig->addConfigValue("animations:first_launch_animation", Hyprlang::INT{1});
|
||||||
|
|
||||||
m_pConfig->addConfigValue("input:follow_mouse", Hyprlang::INT{1});
|
m_pConfig->addConfigValue("input:follow_mouse", Hyprlang::INT{1});
|
||||||
|
m_pConfig->addConfigValue("input:focus_on_close", Hyprlang::INT{0});
|
||||||
m_pConfig->addConfigValue("input:mouse_refocus", Hyprlang::INT{1});
|
m_pConfig->addConfigValue("input:mouse_refocus", Hyprlang::INT{1});
|
||||||
m_pConfig->addConfigValue("input:special_fallthrough", Hyprlang::INT{0});
|
m_pConfig->addConfigValue("input:special_fallthrough", Hyprlang::INT{0});
|
||||||
m_pConfig->addConfigValue("input:off_window_axis_events", Hyprlang::INT{1});
|
m_pConfig->addConfigValue("input:off_window_axis_events", Hyprlang::INT{1});
|
||||||
|
|
|
@ -648,7 +648,12 @@ void Events::listener_unmapWindow(void* owner, void* data) {
|
||||||
|
|
||||||
// refocus on a new window if needed
|
// refocus on a new window if needed
|
||||||
if (wasLastWindow) {
|
if (wasLastWindow) {
|
||||||
const auto PWINDOWCANDIDATE = g_pLayoutManager->getCurrentLayout()->getNextWindowCandidate(PWINDOW);
|
static auto FOCUSONCLOSE = CConfigValue<Hyprlang::INT>("input:focus_on_close");
|
||||||
|
PHLWINDOW PWINDOWCANDIDATE = nullptr;
|
||||||
|
if (*FOCUSONCLOSE)
|
||||||
|
PWINDOWCANDIDATE = (g_pCompositor->vectorToWindowUnified(g_pInputManager->getMouseCoordsInternal(), RESERVED_EXTENTS | INPUT_EXTENTS | ALLOW_FLOATING));
|
||||||
|
else
|
||||||
|
PWINDOWCANDIDATE = g_pLayoutManager->getCurrentLayout()->getNextWindowCandidate(PWINDOW);
|
||||||
|
|
||||||
Debug::log(LOG, "On closed window, new focused candidate is {}", PWINDOWCANDIDATE);
|
Debug::log(LOG, "On closed window, new focused candidate is {}", PWINDOWCANDIDATE);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue