From fc810f082f4443ddbc546618013d32203b265431 Mon Sep 17 00:00:00 2001 From: citr0net Date: Wed, 28 Jan 2026 17:58:41 -0700 Subject: [PATCH 1/6] Upload init * Added onHover() under PageElements.py * Default behavior is to pass to prevent log spam * Added checkForHover() under Window.py --- Examples/TestScreen.py | 0 Examples/hawk.png | Bin Examples/run.py | 0 PageElements.py | 12 ++++++++++++ Screen.py | 0 Window.py | 7 +++++++ 6 files changed, 19 insertions(+) mode change 100644 => 100755 Examples/TestScreen.py mode change 100644 => 100755 Examples/hawk.png mode change 100644 => 100755 Examples/run.py mode change 100644 => 100755 PageElements.py mode change 100644 => 100755 Screen.py mode change 100644 => 100755 Window.py diff --git a/Examples/TestScreen.py b/Examples/TestScreen.py old mode 100644 new mode 100755 diff --git a/Examples/hawk.png b/Examples/hawk.png old mode 100644 new mode 100755 diff --git a/Examples/run.py b/Examples/run.py old mode 100644 new mode 100755 diff --git a/PageElements.py b/PageElements.py old mode 100644 new mode 100755 index 5b6a912..25fd0e9 --- a/PageElements.py +++ b/PageElements.py @@ -14,12 +14,21 @@ def wasClicked(self, clickLoc): return True return False + def wasHovered(self, mouse_pos): + mouse_pos = pygame.mouse.get_pos() + if self.rect.collidepoint(mouse_pos): + return True + return False + def display(self, surface): pygame.draw.rect(surface, self.color, self.rect) def onClick(self, screen): print("You've clicked a useless page element") + def onHover(self, screen): + print('Hovered!') + def adjustToScreenSize(self, screenDims): #call on screen size adjust event? #https://www.pygame.org/docs/ref/display.html#:~:text=If%20the%20display%20is%20set,the%20window%20must%20be%20redrawn. @@ -94,6 +103,9 @@ def onClick(self, screen): print("a ha! You've found a useless button. Great Work") print('The text on this button is: ' + self.text) + def onHover(self, screen): + pass + def display(self, surface): font = pygame.font.Font('freesansbold.ttf', 14) textSurf = font.render(self.text, True, self.textColorRGB) diff --git a/Screen.py b/Screen.py old mode 100644 new mode 100755 diff --git a/Window.py b/Window.py old mode 100644 new mode 100755 index 5708d46..292390a --- a/Window.py +++ b/Window.py @@ -50,3 +50,10 @@ def checkForInput(self, screen): if event.type == pygame.VIDEORESIZE: self.screenDims = self.screen.get_size() + def checkForHover(self, screen): + mouse_pos = pygame.mouse.get_pos() + for e in screen.elements[::-1]: + if e.wasHovered(mouse_pos): + e.onHover(screen) + return + From 2794bcc219e280731bc101dab1c27768fa2b5c25 Mon Sep 17 00:00:00 2001 From: Elias Date: Thu, 29 Jan 2026 17:58:04 -0700 Subject: [PATCH 2/6] Fixed onHover() unfocused window Unable to test due to Hyprland issues having restricted mouse control, specifically Wayland. Determined focus using pygame.mouse.get_focused() --- Window.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Window.py b/Window.py index 292390a..8aec0ed 100755 --- a/Window.py +++ b/Window.py @@ -53,7 +53,8 @@ def checkForInput(self, screen): def checkForHover(self, screen): mouse_pos = pygame.mouse.get_pos() for e in screen.elements[::-1]: - if e.wasHovered(mouse_pos): - e.onHover(screen) - return - + if pygame.mouse.get_focused() != False: + if e.wasHovered(mouse_pos): + e.onHover(screen) + return + From 8a6938d751af0788146bdeff271bee5902ff2e8b Mon Sep 17 00:00:00 2001 From: Elias Date: Fri, 30 Jan 2026 11:57:10 -0700 Subject: [PATCH 3/6] Add notHovered method and update onHover behavior Added a placeholder method 'notHovered' and modified 'onHover' to pass instead of printing a message. --- PageElements.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/PageElements.py b/PageElements.py index 25fd0e9..99d3319 100755 --- a/PageElements.py +++ b/PageElements.py @@ -27,7 +27,10 @@ def onClick(self, screen): print("You've clicked a useless page element") def onHover(self, screen): - print('Hovered!') + pass + + def notHovered(self, screen): + pass def adjustToScreenSize(self, screenDims): #call on screen size adjust event? @@ -196,4 +199,4 @@ def getCenterFromRect(rect): - \ No newline at end of file + From 718414883cabc4ede5a3fdb9885ce36cc4d9ba53 Mon Sep 17 00:00:00 2001 From: Elias Date: Fri, 30 Jan 2026 11:58:03 -0700 Subject: [PATCH 4/6] Handle mouse hover state for screen elements --- Window.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Window.py b/Window.py index 8aec0ed..e188074 100755 --- a/Window.py +++ b/Window.py @@ -56,5 +56,9 @@ def checkForHover(self, screen): if pygame.mouse.get_focused() != False: if e.wasHovered(mouse_pos): e.onHover(screen) + else: + e.notHovered(screen) return + + From ecb2fdc75291a1588438d1b8ea3a15cc79676234 Mon Sep 17 00:00:00 2001 From: Elias Date: Fri, 30 Jan 2026 11:59:22 -0700 Subject: [PATCH 5/6] Remove unnecessary code --- PageElements.py | 1 - 1 file changed, 1 deletion(-) diff --git a/PageElements.py b/PageElements.py index 99d3319..6716358 100755 --- a/PageElements.py +++ b/PageElements.py @@ -15,7 +15,6 @@ def wasClicked(self, clickLoc): return False def wasHovered(self, mouse_pos): - mouse_pos = pygame.mouse.get_pos() if self.rect.collidepoint(mouse_pos): return True return False From b962e572d86fd4972065a317bac284f7d2d91070 Mon Sep 17 00:00:00 2001 From: Elias Date: Thu, 5 Feb 2026 19:10:53 -0700 Subject: [PATCH 6/6] Update run.py --- Examples/run.py | 1 + 1 file changed, 1 insertion(+) diff --git a/Examples/run.py b/Examples/run.py index 8da01b0..c5c8de0 100755 --- a/Examples/run.py +++ b/Examples/run.py @@ -20,4 +20,5 @@ ##---------------------------------------------------- window.checkForInput(screen) #checks for inputs on the screen + window.checkForHover(screen) #checks for hover on the screen window.update(screen) #updates the window to reflect the new screen