diff --git a/src/core/hyprlock.cpp b/src/core/hyprlock.cpp index 1bd4486..4a080a4 100644 --- a/src/core/hyprlock.cpp +++ b/src/core/hyprlock.cpp @@ -732,22 +732,19 @@ void CHyprlock::onHover(const Vector2D& pos) { const auto widgets = g_pRenderer->getOrCreateWidgetsFor(*m_focusedOutput->m_sessionLockSurface); for (const auto& widget : widgets) { const bool CONTAINSPOINT = widget->containsPoint(SCALEDPOS); - const bool HOVERED = widget->isHovered(); + const bool SHOULDHOVER = !widget->staticHover() || !widget->isHovered(); if (CONTAINSPOINT) { - if (!HOVERED) { + if (SHOULDHOVER) { widget->setHover(true); widget->onHover(pos); - widget->onPointerMove(pos); outputNeedsRedraw = true; - } else { - outputNeedsRedraw |= widget->onPointerMove(pos); } if (!cursorChanged) cursorChanged = true; - } else if (HOVERED) { + } else if (widget->isHovered()) { widget->setHover(false); outputNeedsRedraw = true; } diff --git a/src/renderer/widgets/IWidget.cpp b/src/renderer/widgets/IWidget.cpp index cc7ab28..66e70f9 100644 --- a/src/renderer/widgets/IWidget.cpp +++ b/src/renderer/widgets/IWidget.cpp @@ -275,8 +275,8 @@ bool IWidget::isHovered() const { return hovered; } -bool IWidget::onPointerMove(const Vector2D& pos) { - return false; +bool IWidget::staticHover() const { + return true; } bool IWidget::containsPoint(const Vector2D& pos) const { diff --git a/src/renderer/widgets/IWidget.hpp b/src/renderer/widgets/IWidget.hpp index 388287d..1977625 100644 --- a/src/renderer/widgets/IWidget.hpp +++ b/src/renderer/widgets/IWidget.hpp @@ -29,7 +29,7 @@ class IWidget { }; virtual void onClick(uint32_t button, bool down, const Vector2D& pos) {} virtual void onHover(const Vector2D& pos) {} - virtual bool onPointerMove(const Vector2D& pos); + virtual bool staticHover() const; bool containsPoint(const Vector2D& pos) const; struct SFormatResult { diff --git a/src/renderer/widgets/PasswordInputField.cpp b/src/renderer/widgets/PasswordInputField.cpp index 50131dc..26dc8dd 100644 --- a/src/renderer/widgets/PasswordInputField.cpp +++ b/src/renderer/widgets/PasswordInputField.cpp @@ -629,19 +629,16 @@ CBox CPasswordInputField::getEyeBox() { } void CPasswordInputField::onHover(const Vector2D& pos) { - g_pSeatManager->m_pCursorShape->setShape(WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_TEXT); -} - -bool CPasswordInputField::onPointerMove(const Vector2D& pos) { CBox eyeBox = getEyeBox(); if (eyeBox.containsPoint(pos)) { g_pSeatManager->m_pCursorShape->setShape(WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_POINTER); - return true; } else { g_pSeatManager->m_pCursorShape->setShape(WP_CURSOR_SHAPE_DEVICE_V1_SHAPE_TEXT); } +} +bool CPasswordInputField::staticHover() const { return false; } diff --git a/src/renderer/widgets/PasswordInputField.hpp b/src/renderer/widgets/PasswordInputField.hpp index 0672360..3aa6559 100644 --- a/src/renderer/widgets/PasswordInputField.hpp +++ b/src/renderer/widgets/PasswordInputField.hpp @@ -24,7 +24,7 @@ class CPasswordInputField : public IWidget { virtual void configure(const std::unordered_map& prop, const SP& pOutput); virtual bool draw(const SRenderData& data); virtual void onHover(const Vector2D& pos); - virtual bool onPointerMove(const Vector2D& pos); + virtual bool staticHover() const; virtual void onClick(uint32_t button, bool down, const Vector2D& pos); virtual CBox getBoundingBoxWl() const;