feat: transfer focus to hovered GameCard with mutual exclusivity
All checks were successful
Code and build check / Check code (push) Successful in 1m50s
Code and build check / Build with uv (push) Successful in 54s

Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
This commit is contained in:
2025-06-17 23:11:25 +05:00
parent a57f509295
commit ff960df77c

View File

@ -476,8 +476,8 @@ class GameCard(QFrame):
def enterEvent(self, event): def enterEvent(self, event):
self._hovered = True self._hovered = True
self._focused = False
self.hoverChanged.emit(self.name, True) self.hoverChanged.emit(self.name, True)
self.setFocus(Qt.FocusReason.MouseFocusReason)
self.thickness_anim.stop() self.thickness_anim.stop()
if self._isPulseAnimationConnected: if self._isPulseAnimationConnected:
@ -499,7 +499,6 @@ class GameCard(QFrame):
self.gradient_anim.setLoopCount(-1) self.gradient_anim.setLoopCount(-1)
self.gradient_anim.start() self.gradient_anim.start()
self.clearFocus()
super().enterEvent(event) super().enterEvent(event)
def leaveEvent(self, event): def leaveEvent(self, event):
@ -524,9 +523,8 @@ class GameCard(QFrame):
super().leaveEvent(event) super().leaveEvent(event)
def focusInEvent(self, event): def focusInEvent(self, event):
if not self._hovered:
self._focused = True self._focused = True
self._hovered = False
self.hoverChanged.emit(self.name, False)
self.focusChanged.emit(self.name, True) self.focusChanged.emit(self.name, True)
self.thickness_anim.stop() self.thickness_anim.stop()
@ -558,13 +556,14 @@ class GameCard(QFrame):
if self.gradient_anim: if self.gradient_anim:
self.gradient_anim.stop() self.gradient_anim.stop()
self.gradient_anim = None self.gradient_anim = None
if self.pulse_anim:
self.pulse_anim.stop()
self.pulse_anim = None
if self.thickness_anim:
self.thickness_anim.stop() self.thickness_anim.stop()
if self._isPulseAnimationConnected: if self._isPulseAnimationConnected:
self.thickness_anim.finished.disconnect(self.startPulseAnimation) self.thickness_anim.finished.disconnect(self.startPulseAnimation)
self._isPulseAnimationConnected = False self._isPulseAnimationConnected = False
if self.pulse_anim:
self.pulse_anim.stop()
self.pulse_anim = None
self.thickness_anim.setEasingCurve(QEasingCurve(QEasingCurve.Type[self.theme.GAME_CARD_ANIMATION["thickness_easing_curve_out"]])) self.thickness_anim.setEasingCurve(QEasingCurve(QEasingCurve.Type[self.theme.GAME_CARD_ANIMATION["thickness_easing_curve_out"]]))
self.thickness_anim.setStartValue(self._borderWidth) self.thickness_anim.setStartValue(self._borderWidth)
self.thickness_anim.setEndValue(self.theme.GAME_CARD_ANIMATION["default_border_width"]) self.thickness_anim.setEndValue(self.theme.GAME_CARD_ANIMATION["default_border_width"])