Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: change min cursor padding to 0 #6027

Merged
merged 11 commits into from
Jul 2, 2024
2 changes: 1 addition & 1 deletion src/config/ConfigManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -525,7 +525,7 @@ CConfigManager::CConfigManager() {
m_pConfig->addConfigValue("cursor:no_hardware_cursors", Hyprlang::INT{0});
m_pConfig->addConfigValue("cursor:no_break_fs_vrr", Hyprlang::INT{0});
m_pConfig->addConfigValue("cursor:min_refresh_rate", Hyprlang::INT{24});
m_pConfig->addConfigValue("cursor:hotspot_padding", Hyprlang::INT{1});
m_pConfig->addConfigValue("cursor:hotspot_padding", Hyprlang::INT{0});
drendog marked this conversation as resolved.
Show resolved Hide resolved
m_pConfig->addConfigValue("cursor:inactive_timeout", Hyprlang::INT{0});
m_pConfig->addConfigValue("cursor:no_warps", Hyprlang::INT{0});
m_pConfig->addConfigValue("cursor:persistent_warps", Hyprlang::INT{0});
Expand Down
10 changes: 8 additions & 2 deletions src/managers/PointerManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -610,7 +610,7 @@ CBox CPointerManager::getCursorBoxGlobal() {
Vector2D CPointerManager::closestValid(const Vector2D& pos) {
static auto PADDING = CConfigValue<Hyprlang::INT>("cursor:hotspot_padding");

auto CURSOR_PADDING = std::clamp((int)*PADDING, 1, 100); // 1px
auto CURSOR_PADDING = std::clamp((int)*PADDING, 0, 100);
drendog marked this conversation as resolved.
Show resolved Hide resolved
CBox hotBox = {{pos.x - CURSOR_PADDING, pos.y - CURSOR_PADDING}, {2 * CURSOR_PADDING, 2 * CURSOR_PADDING}};

//
Expand All @@ -635,7 +635,13 @@ Vector2D CPointerManager::closestValid(const Vector2D& pos) {
float distanceSq = __FLT_MAX__;

for (auto& b : currentMonitorLayout.monitorBoxes) {
auto p = b.closestPoint(vec);
auto p = b.closestPoint(vec);

auto maxPoint = Vector2D{std::nextafter(b.x + b.w, -INFINITY), std::nextafter(b.y + b.h, -INFINITY)};
vaxerski marked this conversation as resolved.
Show resolved Hide resolved

// because closestPoint clamps up to x + w and y + h
p = Vector2D{std::clamp(p.x, b.x, maxPoint.x), std::clamp(p.y, b.y, maxPoint.y)};

auto distSq = p.distanceSq(vec);

if (distSq < distanceSq) {
Expand Down
Loading