mirror of
https://github.com/hyprwm/Hyprland.git
synced 2025-08-16 12:33:48 -07:00
InputManager: add nofollowmouse (#9994)
* InputManager: add nofollowmouse with this, focus_follows_mouse=1 acts like focus_follows_mouse=2 on the specific windows defined by the user * e * e biggest e of all time
This commit is contained in:
@@ -104,6 +104,7 @@ struct SWindowData {
|
|||||||
CWindowOverridableVar<bool> tearing = false;
|
CWindowOverridableVar<bool> tearing = false;
|
||||||
CWindowOverridableVar<bool> xray = false;
|
CWindowOverridableVar<bool> xray = false;
|
||||||
CWindowOverridableVar<bool> renderUnfocused = false;
|
CWindowOverridableVar<bool> renderUnfocused = false;
|
||||||
|
CWindowOverridableVar<bool> noFollowMouse = false;
|
||||||
|
|
||||||
CWindowOverridableVar<Hyprlang::INT> borderSize = {std::string("general:border_size"), Hyprlang::INT(0), std::nullopt};
|
CWindowOverridableVar<Hyprlang::INT> borderSize = {std::string("general:border_size"), Hyprlang::INT(0), std::nullopt};
|
||||||
CWindowOverridableVar<Hyprlang::INT> rounding = {std::string("decoration:rounding"), Hyprlang::INT(0), std::nullopt};
|
CWindowOverridableVar<Hyprlang::INT> rounding = {std::string("decoration:rounding"), Hyprlang::INT(0), std::nullopt};
|
||||||
@@ -484,6 +485,7 @@ namespace NWindowProperties {
|
|||||||
{"syncfullscreen", [](const PHLWINDOW& pWindow) { return &pWindow->m_sWindowData.syncFullscreen; }},
|
{"syncfullscreen", [](const PHLWINDOW& pWindow) { return &pWindow->m_sWindowData.syncFullscreen; }},
|
||||||
{"immediate", [](const PHLWINDOW& pWindow) { return &pWindow->m_sWindowData.tearing; }},
|
{"immediate", [](const PHLWINDOW& pWindow) { return &pWindow->m_sWindowData.tearing; }},
|
||||||
{"xray", [](const PHLWINDOW& pWindow) { return &pWindow->m_sWindowData.xray; }},
|
{"xray", [](const PHLWINDOW& pWindow) { return &pWindow->m_sWindowData.xray; }},
|
||||||
|
{"nofollowmouse", [](const PHLWINDOW& pWindow) { return &pWindow->m_sWindowData.noFollowMouse; }},
|
||||||
};
|
};
|
||||||
|
|
||||||
const std::unordered_map<std::string, std::function<CWindowOverridableVar<Hyprlang::INT>*(const PHLWINDOW&)>> intWindowProperties = {
|
const std::unordered_map<std::string, std::function<CWindowOverridableVar<Hyprlang::INT>*(const PHLWINDOW&)>> intWindowProperties = {
|
||||||
|
@@ -546,8 +546,12 @@ void CInputManager::mouseMoveUnified(uint32_t time, bool refocus, bool mouse) {
|
|||||||
// TODO: this looks wrong. When over a popup, it constantly is switching.
|
// TODO: this looks wrong. When over a popup, it constantly is switching.
|
||||||
// Temp fix until that's figured out. Otherwise spams windowrule lookups and other shit.
|
// Temp fix until that's figured out. Otherwise spams windowrule lookups and other shit.
|
||||||
if (m_pLastMouseFocus.lock() != pFoundWindow || g_pCompositor->m_pLastWindow.lock() != pFoundWindow) {
|
if (m_pLastMouseFocus.lock() != pFoundWindow || g_pCompositor->m_pLastWindow.lock() != pFoundWindow) {
|
||||||
if (m_fMousePosDelta > *PFOLLOWMOUSETHRESHOLD || refocus)
|
if (m_fMousePosDelta > *PFOLLOWMOUSETHRESHOLD || refocus) {
|
||||||
g_pCompositor->focusWindow(pFoundWindow, foundSurface);
|
const bool hasNoFollowMouse = pFoundWindow && pFoundWindow->m_sWindowData.noFollowMouse.valueOrDefault();
|
||||||
|
|
||||||
|
if (refocus || !hasNoFollowMouse)
|
||||||
|
g_pCompositor->focusWindow(pFoundWindow, foundSurface);
|
||||||
|
}
|
||||||
} else
|
} else
|
||||||
g_pCompositor->focusSurface(foundSurface, pFoundWindow);
|
g_pCompositor->focusSurface(foundSurface, pFoundWindow);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user