fix: improve mouse divider dragging logic and event handling
This commit is contained in:
parent
cfdef57993
commit
f58ae2783f
|
|
@ -81,8 +81,6 @@ def main(stdscr, filename):
|
||||||
if bstate & curses.BUTTON1_PRESSED:
|
if bstate & curses.BUTTON1_PRESSED:
|
||||||
if mx == divider_col:
|
if mx == divider_col:
|
||||||
dragging_divider = True
|
dragging_divider = True
|
||||||
elif bstate & curses.BUTTON1_RELEASED:
|
|
||||||
dragging_divider = False
|
|
||||||
|
|
||||||
# Update divider position while dragging
|
# Update divider position while dragging
|
||||||
if dragging_divider:
|
if dragging_divider:
|
||||||
|
|
@ -90,25 +88,28 @@ def main(stdscr, filename):
|
||||||
max_col = width - 20 # leave space for right pane
|
max_col = width - 20 # leave space for right pane
|
||||||
divider_col = max(min_col, min(mx, max_col))
|
divider_col = max(min_col, min(mx, max_col))
|
||||||
|
|
||||||
elif bstate & curses.BUTTON1_CLICKED:
|
if bstate & curses.BUTTON1_RELEASED:
|
||||||
|
dragging_divider = False
|
||||||
|
elif bstate & curses.BUTTON1_CLICKED and not dragging_divider:
|
||||||
focus = "left" if mx < divider_col else "right"
|
focus = "left" if mx < divider_col else "right"
|
||||||
except curses.error:
|
except curses.error:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
# Check for mouse release even when no explicit mouse event
|
# Continue updating divider position even without explicit mouse events
|
||||||
# This helps catch mouse releases that might be missed
|
|
||||||
elif dragging_divider:
|
elif dragging_divider:
|
||||||
try:
|
try:
|
||||||
_, mx, my, _, bstate = curses.getmouse()
|
_, mx, my, _, bstate = curses.getmouse()
|
||||||
# Update divider position while dragging
|
|
||||||
|
# Update divider position
|
||||||
min_col = 10
|
min_col = 10
|
||||||
max_col = width - 20 # leave space for right pane
|
max_col = width - 20 # leave space for right pane
|
||||||
divider_col = max(min_col, min(mx, max_col))
|
divider_col = max(min_col, min(mx, max_col))
|
||||||
|
|
||||||
# Check if button is no longer pressed
|
# Check for mouse button release
|
||||||
if not (bstate & curses.BUTTON1_PRESSED):
|
if bstate & curses.BUTTON1_RELEASED or not (bstate & curses.BUTTON1_PRESSED):
|
||||||
dragging_divider = False
|
dragging_divider = False
|
||||||
except curses.error:
|
except curses.error:
|
||||||
|
# If we can't get mouse state, keep the divider where it is
|
||||||
pass
|
pass
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue