Fix: Invisible overlay blocking mouse clicks
Problem: The overlay window, even when fully transparent or visually hidden (opacity 0), was still intercepting mouse events. This created a 'dead zone' on the screen where users could not click through to applications behind the overlay. This occurred because the low-level window hook was answering 'HTCAPTION' to hit tests regardless of the UI state. Solution: 1. Modified 'WindowHook' to accept an 'enabled' state. 2. When disabled, 'WM_NCHITTEST' now returns 'HTTRANSPARENT', allowing the OS to pass the click to the window underneath. 3. Updated 'main.py' to toggle this hook state dynamically: - ENABLED when Recording or Processing (UI is visible/active). - DISABLED when Idling (UI is hidden/transparent). Result: The overlay is now completely non-intrusive when not in use.
This commit is contained in:
@@ -65,6 +65,10 @@ class WindowHook:
|
||||
# (Window 420x140, Pill 380x100)
|
||||
self.logical_rect = [20, 20, 20+380, 20+100]
|
||||
self.current_scale = initial_scale
|
||||
self.enabled = True # New flag
|
||||
|
||||
def set_enabled(self, enabled):
|
||||
self.enabled = enabled
|
||||
|
||||
def install(self):
|
||||
proc_address = ctypes.cast(self.new_wnd_proc, ctypes.c_void_p)
|
||||
@@ -73,6 +77,10 @@ class WindowHook:
|
||||
def wnd_proc_callback(self, hwnd, msg, wParam, lParam):
|
||||
try:
|
||||
if msg == WM_NCHITTEST:
|
||||
# If disabled (invisible/inactive), let clicks pass through (HTTRANSPARENT)
|
||||
if not self.enabled:
|
||||
return HTTRANSPARENT
|
||||
|
||||
res = self.on_nchittest(lParam)
|
||||
if res != 0:
|
||||
return res
|
||||
|
||||
Reference in New Issue
Block a user