fix: improve mouse event handling for divider dragging
This commit is contained in:
parent
a1255b237b
commit
cfdef57993
|
|
@ -81,29 +81,32 @@ def main(stdscr, filename):
|
|||
if bstate & curses.BUTTON1_PRESSED:
|
||||
if mx == divider_col:
|
||||
dragging_divider = True
|
||||
elif dragging_divider:
|
||||
# Update divider while dragging
|
||||
elif bstate & curses.BUTTON1_RELEASED:
|
||||
dragging_divider = False
|
||||
|
||||
# Update divider position while dragging
|
||||
if dragging_divider:
|
||||
min_col = 10
|
||||
max_col = width - 20 # leave space for right pane
|
||||
divider_col = max(min_col, min(mx, max_col))
|
||||
|
||||
elif bstate & curses.BUTTON1_RELEASED:
|
||||
dragging_divider = False
|
||||
|
||||
|
||||
elif bstate & curses.BUTTON1_CLICKED:
|
||||
focus = "left" if mx < divider_col else "right"
|
||||
except curses.error:
|
||||
pass
|
||||
|
||||
# Check for mouse release even when no explicit mouse event
|
||||
# This helps catch mouse releases that might be missed
|
||||
elif dragging_divider:
|
||||
# Force a mouse event check while dragging
|
||||
try:
|
||||
_, mx, my, _, bstate = curses.getmouse()
|
||||
if bstate & curses.BUTTON1_PRESSED:
|
||||
min_col = 10
|
||||
max_col = width - 20 # leave space for right pane
|
||||
divider_col = max(min_col, min(mx, max_col))
|
||||
elif bstate & curses.BUTTON1_RELEASED:
|
||||
# Update divider position while dragging
|
||||
min_col = 10
|
||||
max_col = width - 20 # leave space for right pane
|
||||
divider_col = max(min_col, min(mx, max_col))
|
||||
|
||||
# Check if button is no longer pressed
|
||||
if not (bstate & curses.BUTTON1_PRESSED):
|
||||
dragging_divider = False
|
||||
except curses.error:
|
||||
pass
|
||||
|
|
|
|||
Loading…
Reference in New Issue